rpms/Xaw3d/devel Xaw3d-1.5-box.c.patch, NONE, 1.1 Xaw3d-1.5-debian-fixes.patch, NONE, 1.1 .cvsignore, 1.3, 1.4 Xaw3d-ia64.patch, 1.1, 1.2 Xaw3d.spec, 1.33, 1.34 sources, 1.3, 1.4 xaw3d.patch, 1.1, 1.2 Imakefile, 1.1, NONE Xaw3d-1.3-X11R6.3.patch, 1.1, NONE Xaw3d-1.3-glibc.patch, 1.1, NONE Xaw3d-1.3-misc.patch, 1.1, NONE Xaw3d-1.5-scrollbar2.patch, 1.1, NONE

Hans de Goede jwrdegoede at fedoraproject.org
Tue Oct 7 20:32:38 UTC 2008


Author: jwrdegoede

Update of /cvs/extras/rpms/Xaw3d/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv32509

Modified Files:
	.cvsignore Xaw3d-ia64.patch Xaw3d.spec sources xaw3d.patch 
Added Files:
	Xaw3d-1.5-box.c.patch Xaw3d-1.5-debian-fixes.patch 
Removed Files:
	Imakefile Xaw3d-1.3-X11R6.3.patch Xaw3d-1.3-glibc.patch 
	Xaw3d-1.3-misc.patch Xaw3d-1.5-scrollbar2.patch 
Log Message:
* Tue Oct  6 2008 Hans de Goede <hdegoede at redhat.com> 1.5E-12
- Remove obsolete PreReq and Prefix stuff from specfile
- Fix BuildRoot to match the guidelines
- Require base package by full EVR from devel package
- Drop non relevant Patches and Sources
- Rebase the still relevant patches
- Actually apply the still relevant patches
- Add a patch from Debian fixing an infinite loop (rh436998)
- Add patches from Debian fixes various potential bufferoverflows


Xaw3d-1.5-box.c.patch:

--- NEW FILE Xaw3d-1.5-box.c.patch ---
#! /bin/sh /usr/share/dpatch/dpatch-run
## box.c.dpatch by Francesco Paolo Lovergine <frankie at debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.

@DPATCH@
diff -urNad xaw3d-1.5+E~/lib/Xaw3d/Box.c xaw3d-1.5+E/lib/Xaw3d/Box.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/Box.c	1996-10-15 16:41:18.000000000 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/Box.c	2007-04-24 15:28:39.000000000 +0200
@@ -353,8 +353,16 @@
 	else {
 	    width = preferred_width;
 	    do { /* find some width big enough to stay within this height */
+#if 0 
 		width *= 2;
 		if (width > constraint->width) width = constraint->width;
+#endif
+                if (width > constraint->width/2) {  /* avoid short int overflow */
+ 		    width = constraint->width;
+		}
+                else { 
+		    width *= 2; 
+		}
 		DoLayout(w, width, 0, &preferred_width, &preferred_height, FALSE);
 	    } while (preferred_height > constraint->height &&
 		     width < constraint->width);

Xaw3d-1.5-debian-fixes.patch:

--- NEW FILE Xaw3d-1.5-debian-fixes.patch ---
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c.debian	2000-11-27 14:19:36.000000000 +0100
+++ Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c	2008-10-06 11:42:13.000000000 +0200
@@ -51,11 +51,17 @@ in this Software without prior written a
 #include <X11/Xaw3d/MultiSrcP.h> 
 #endif
 
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
 
 #if (defined(ASCII_STRING) || defined(ASCII_DISK))
 #  include <X11/Xaw3d/AsciiText.h> /* for Widget Classes. */
 #endif
 
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
 
 /****************************************************************
  *
@@ -1007,7 +1013,9 @@ InitStringOrFile(src, newString)
 AsciiSrcObject src;
 Boolean newString;
 {
-    char * open_mode = NULL;
+    mode_t open_mode = 0;
+    const char *fdopen_mode = NULL;
+    int fd;
     FILE * file;
     char fileName[TMPSIZ];
 
@@ -1049,7 +1057,8 @@ Boolean newString;
 	    XtErrorMsg("NoFile", "asciiSourceCreate", "XawError",
 		     "Creating a read only disk widget and no file specified.",
 		       NULL, 0);
-	open_mode = "r";
+	open_mode = O_RDONLY;
+	fdopen_mode = "r";
 	break;
     case XawtextAppend:
     case XawtextEdit:
@@ -1057,9 +1066,17 @@ Boolean newString;
 	    src->ascii_src.string = fileName;
 	    (void) tmpnam(src->ascii_src.string);
 	    src->ascii_src.is_tempfile = TRUE;
-	    open_mode = "w";
-	} else
-	    open_mode = "r+";
+	    open_mode = O_WRONLY | O_CREAT | O_EXCL;
+	    fdopen_mode = "w";
+	} else {
+/* O_NOFOLLOW is a BSD & Linux extension */
+#ifdef O_NOFOLLOW
+		open_mode = O_RDWR | O_NOFOLLOW;
+#else
+		open_mode = O_RDWR; /* unsafe; subject to race conditions */
+#endif
+		fdopen_mode = "r+";
+	}
 	break;
     default:
 	XtErrorMsg("badMode", "asciiSourceCreate", "XawError",
@@ -1078,11 +1095,14 @@ Boolean newString;
     }
     
     if (!src->ascii_src.is_tempfile) {
-	if ((file = fopen(src->ascii_src.string, open_mode)) != 0) {
-	    (void) fseek(file, (Off_t)0, 2);
-	    src->ascii_src.length = (XawTextPosition) ftell(file);
-	    return file;
-	} else {
+	if ((fd = open(src->ascii_src.string, open_mode, 0666))) {
+	    if ((file = fdopen(fd, fdopen_mode)) != NULL) {
+		    (void)fseek(file, 0, SEEK_END);
+		    src->ascii_src.length = (XawTextPosition)ftell(file);
+		    return (file);
+	    }
+	}
+	{	    
 	    String params[2];
 	    Cardinal num_params = 2;
 	    
@@ -1094,7 +1114,7 @@ Boolean newString;
 	}
     } 
     src->ascii_src.length = 0;
-    return((FILE *)NULL);
+    return(NULL);
 }
 
 static void
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h.debian Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h
--- Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h.debian	1996-10-15 16:41:18.000000000 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h	2008-10-06 11:42:13.000000000 +0200
@@ -85,7 +85,11 @@ SOFTWARE.
 #ifdef L_tmpnam
 #define TMPSIZ L_tmpnam
 #else
-#define TMPSIZ 32		/* bytes to allocate for tmpnam */
+#ifdef PATH_MAX
+#define TMPSIZ PATH_MAX
+#else
+#define TMPSIZ 1024		/* bytes to allocate for tmpnam */
+#endif
 #endif
 
 #define MAGIC_VALUE ((XawTextPosition) -1) /* Magic value. */
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c.debian	1996-10-15 16:41:20.000000000 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c	2008-10-06 11:42:13.000000000 +0200
@@ -53,6 +53,8 @@ in this Software without prior written a
 #include <X11/Xaw3d/XawInit.h>
 #include <X11/Xaw3d/MenuButtoP.h>
 
+#include "XawAlloc.h"
+
 static void ClassInitialize();
 static void PopupMenu();
 
@@ -179,9 +181,16 @@ Cardinal * num_params;
 
   if (menu == NULL) {
     char error_buf[BUFSIZ];
-    (void) sprintf(error_buf, "MenuButton: %s %s.",
-	    "Could not find menu widget named", mbw->menu_button.menu_name);
-    XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
+    char *err1 = "MenuButton: Could not find menu widget named ";
+    char *perr;
+    int len;
+
+    len = strlen(err1) + strlen(mbw->menu_button.menu_name) + 1 + 1;
+    perr = XtStackAlloc(len, error_buf);
+    if (perr == NULL) return;
+    sprintf(perr, "%s%s.", err1, mbw->menu_button.menu_name);
+    XtAppWarning(XtWidgetToApplicationContext(w), perr);
+    XtStackFree(perr, error_buf);
     return;
   }
   if (!XtIsRealized(menu))
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c.debian	2008-10-06 11:42:13.000000000 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c	2008-10-06 11:42:13.000000000 +0200
@@ -74,6 +74,9 @@ in this Software without prior written a
 #include <stdio.h>
 #include <ctype.h>
 #include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
 
 /****************************************************************
  *
@@ -1077,7 +1080,9 @@ InitStringOrFile(src, newString)
     MultiSrcObject src;
     Boolean newString;
 {
-    char * open_mode = NULL;
+    mode_t open_mode = 0;
+    const char *fdopen_mode = NULL;
+    int fd;
     FILE * file;
     char fileName[TMPSIZ];
     Display *d = XtDisplayOfObject((Widget)src);
@@ -1128,7 +1133,8 @@ InitStringOrFile(src, newString)
 	    XtErrorMsg("NoFile", "multiSourceCreate", "XawError",
 		     "Creating a read only disk widget and no file specified.",
 		       NULL, 0);
-	open_mode = "r";
+	open_mode = O_RDONLY;
+	fdopen_mode = "r";
 	break;
     case XawtextAppend:
     case XawtextEdit:
@@ -1141,9 +1147,17 @@ InitStringOrFile(src, newString)
 
 	    (void) tmpnam(src->multi_src.string);
 	    src->multi_src.is_tempfile = TRUE;
-	    open_mode = "w";
-	} else
-	    open_mode = "r+";
+	    open_mode = O_WRONLY | O_CREAT | O_EXCL;
+	    fdopen_mode = "w";
+	} else {
+/* O_NOFOLLOW is a BSD & Linux extension */
+#ifdef O_NOFOLLOW 
+		open_mode = O_RDWR | O_NOFOLLOW;
+#else
+		open_mode = O_RDWR; /* unsafe; subject to race conditions */
+#endif
+		fdopen_mode = "r+";
+	}
 	break;
     default:
 	XtErrorMsg("badMode", "multiSourceCreate", "XawError",
@@ -1162,11 +1176,14 @@ InitStringOrFile(src, newString)
     }
     
     if (!src->multi_src.is_tempfile) {
-	if ((file = fopen(src->multi_src.string, open_mode)) != 0) {
-	    (void) fseek(file, (Off_t)0, 2);
-            src->multi_src.length = ftell (file);
-	    return file;
-	} else {
+	if ((fd = open(src->multi_src.string, open_mode, 0666))) {
+		if ((file = fdopen(fd, fdopen_mode)) != NULL) {
+			(void)fseek(file, 0, SEEK_END);
+			src->multi_src.length = (XawTextPosition)ftell(file);
+			return (file);
+		}
+	}
+	{
 	    String params[2];
 	    Cardinal num_params = 2;
 	    
@@ -1178,7 +1195,7 @@ InitStringOrFile(src, newString)
 	}
     } 
     src->multi_src.length = 0;
-    return((FILE *)NULL);
+    return(NULL);
 #undef StrLen
 }
 
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h.debian Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h
--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h.debian	1996-10-15 16:41:21.000000000 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h	2008-10-06 11:42:13.000000000 +0200
@@ -113,7 +113,11 @@ SOFTWARE.
 #ifdef L_tmpnam
 #define TMPSIZ L_tmpnam
 #else
-#define TMPSIZ 32		/* bytes to allocate for tmpnam */
+#ifdef PATH_MAX
+#define TMPSIZ PATH_MAX
+#else
+#define TMPSIZ 1024		/* bytes to allocate for tmpnam */
+#endif
 #endif
 
 #define MAGIC_VALUE ((XawTextPosition) -1) /* Magic value. */
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c.debian	2000-11-27 14:19:36.000000000 +0100
+++ Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c	2008-10-06 11:42:13.000000000 +0200
@@ -56,6 +56,8 @@ SOFTWARE.
 #include <X11/Xaw3d/SimpleP.h>
 #include <X11/Xmu/Drawing.h>
 
+#include "XawAlloc.h"
+
 #define offset(field) XtOffsetOf(SimpleRec, simple.field)
 
 static XtResource resources[] = {
@@ -148,11 +150,17 @@ static void ClassPartInitialize(class)
 
     if (c->simple_class.change_sensitive == NULL) {
 	char buf[BUFSIZ];
-
-	(void) sprintf(buf,
-		"%s Widget: The Simple Widget class method 'change_sensitive' is undefined.\nA function must be defined or inherited.",
-		c->core_class.class_name);
-	XtWarning(buf);
+	char *pbuf;
+	char *msg1 = " Widget: The Simple Widget class method 'change_sensitive' is undefined.\nA function must be defined or inherited.";
+	int len;
+
+	len = strlen(msg1) + strlen(c->core_class.class_name) + 1;
+	pbuf = XtStackAlloc(len, buf);
+	if (pbuf != NULL) {
+	    sprintf(pbuf, "%s%s", c->core_class.class_name, msg1);
+	    XtWarning(pbuf);
+	    XtStackFree(pbuf, buf);
+	}
 	c->simple_class.change_sensitive = ChangeSensitive;
     }
 
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c.debian	2003-02-17 07:45:07.000000000 +0100
+++ Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c	2008-10-06 11:42:13.000000000 +0200
@@ -51,6 +51,8 @@ in this Software without prior written a
 #include <X11/Xmu/Initer.h>
 #include <X11/Xmu/CharSet.h>
 
+#include "XawAlloc.h"
+
 #define streq(a, b)        ( strcmp((a), (b)) == 0 )
 
 #define offset(field) XtOffsetOf(SimpleMenuRec, simple_menu.field)
@@ -755,9 +757,17 @@ Cardinal * num_params;
 
   if ( (menu = FindMenu(w, params[0])) == NULL) {
     char error_buf[BUFSIZ];
-    (void) sprintf(error_buf, "%s '%s'",
-	    "Xaw - SimpleMenuWidget: could not find menu named: ", params[0]);
-    XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
+    char *err1 = "Xaw - SimpleMenuWidget: could not find menu named: ";
+    char *perr;
+    int len;
+
+    len = strlen(err1) + strlen(params[0]) + 2 + 1;
+    perr = XtStackAlloc(len, error_buf);
+    if (perr == NULL)
+	return;
+    sprintf(perr, "%s'%s'", err1, params[0]);
+    XtAppWarning(XtWidgetToApplicationContext(w), perr);
+    XtStackFree(perr, error_buf);
     return;
   }
   
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c.debian	2003-02-10 18:18:00.000000000 +0100
+++ Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c	2008-10-06 11:42:13.000000000 +0200
@@ -315,7 +315,15 @@ XtIntervalId *id;		/* unused */
        if (w->strip_chart.points != NULL) {
 	   w->strip_chart.points[0].x = w->strip_chart.interval + s;
 	   XDrawPoints(XtDisplay(w), XtWindow(w), w->strip_chart.hiGC,
-		       w->strip_chart.points, w->strip_chart.scale,
+		/*
+		 * patch:
+		 *
+		 *     w->strip_chart.points, w->strip_chart.scale,
+		 * 
+		 * this to avoid a subdle bug of extra spurios scan
+		 * line in this widget.
+		 */
+		       w->strip_chart.points, w->strip_chart.scale - 1, 
 		       CoordModePrevious);
        }
 
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/Text.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.debian	2008-10-06 11:42:13.000000000 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/Text.c	2008-10-06 11:43:16.000000000 +0200
@@ -76,6 +76,8 @@ SOFTWARE.
 #include <ctype.h>		/* for isprint() */
 #include <stdlib.h>
 
+#include "XawAlloc.h"
+
 #ifndef MAX_LEN_CT
 #define MAX_LEN_CT 6		/* for sequence: ESC $ ( A \xx \xx */
 #endif
@@ -521,6 +523,8 @@ Cardinal *num_args;		/* unused */
   TextWidget ctx = (TextWidget) new;
   char error_buf[BUFSIZ];
   int s;
+  char *perr; /* frankie */
+  size_t len; /* frankie */
 
   ctx->text.threeD = XtVaCreateWidget("threeD", threeDWidgetClass, new,
                                  XtNx, 0, XtNy, 0,
@@ -569,10 +573,17 @@ Cardinal *num_args;		/* unused */
   if (ctx->text.scroll_vert != XawtextScrollNever) 
     if ( (ctx->text.resize == XawtextResizeHeight) ||
      	 (ctx->text.resize == XawtextResizeBoth) ) {
-      (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
-	      "Vertical scrolling not allowed with height resize.\n",
-	      "Vertical scrolling has been DEACTIVATED.");
-      XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
+      char *err1 = "Xaw Text Widget ";
+      char *err2 = ":\nVertical scrolling not allowed with height resize.\n";
+      char *err3 = "Vertical scrolling has been DEACTIVATED.";
+      len = strlen(err1) + strlen(err2) + strlen(err3) +
+		strlen(ctx->core.name) + 1;
+      perr = XtStackAlloc(len, error_buf);
+      if (perr != NULL) {
+	(void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
+	XtAppWarning(XtWidgetToApplicationContext(new), perr);
+	XtStackFree(perr, error_buf);
+      }
       ctx->text.scroll_vert = XawtextScrollNever;
     }
     else if (ctx->text.scroll_vert == XawtextScrollAlways)
@@ -580,18 +591,32 @@ Cardinal *num_args;		/* unused */
 
   if (ctx->text.scroll_horiz != XawtextScrollNever) 
     if (ctx->text.wrap != XawtextWrapNever) {
-      (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
-	      "Horizontal scrolling not allowed with wrapping active.\n",
-	      "Horizontal scrolling has been DEACTIVATED.");
-      XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
+      char *err1 = "Xaw Text Widget ";
+      char *err2 = ":\nHorizontal scrolling not allowed with wrapping active.";
+      char *err3 = "\nHorizontal scrolling has been DEACTIVATED.";
+      len = strlen(err1) + strlen(err2) + strlen(err3) +
+		strlen(ctx->core.name) + 1;
+      perr = XtStackAlloc(len, error_buf);
+      if (perr != NULL) {
+	(void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
+	XtAppWarning(XtWidgetToApplicationContext(new), perr);
+	XtStackFree(perr, error_buf);
+      }
       ctx->text.scroll_horiz = XawtextScrollNever;
     }
     else if ( (ctx->text.resize == XawtextResizeWidth) ||
 	      (ctx->text.resize == XawtextResizeBoth) ) {
-      (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
-	      "Horizontal scrolling not allowed with width resize.\n",
-	      "Horizontal scrolling has been DEACTIVATED.");
-      XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
+      char *err1 = "Xaw Text Widget ";
+      char *err2 = ":\nHorizontal scrolling not allowed with width resize.\n";
+      char *err3 = "Horizontal scrolling has been DEACTIVATED.";
+      len = strlen(err1) + strlen(err2) + strlen(err3) +
+		strlen(ctx->core.name) + 1;
+      perr = XtStackAlloc(len, error_buf);
+      if (perr != NULL) {
+	(void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
+	XtAppWarning(XtWidgetToApplicationContext(new), perr);
+	XtStackFree(perr, error_buf);
+      }
       ctx->text.scroll_horiz = XawtextScrollNever;
     }
     else if (ctx->text.scroll_horiz == XawtextScrollAlways)
diff -up Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c
--- Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c.debian	2000-11-27 14:19:36.000000000 +0100
+++ Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c	2008-10-06 11:42:13.000000000 +0200
@@ -66,6 +66,8 @@ in this Software without prior written a
 #include <X11/Xos.h>		/* for O_RDONLY */
 #include <errno.h>
 
+#include "XawAlloc.h"
+
 #ifdef X_NOT_STDC_ENV
 extern int errno;
 #endif
@@ -809,6 +811,8 @@ DoSearch(search)
 struct SearchAndReplace * search;
 {
   char msg[BUFSIZ];
+  char *pmsg;
+  int len;
   Widget tw = XtParent(search->search_popup);
   XawTextPosition pos;
   XawTextScanDirection dir;
@@ -835,9 +839,20 @@ struct SearchAndReplace * search;
    /* The Raw string in find.ptr may be WC I can't use here, so I re - call 
    GetString to get a tame version. */
 
-  if (pos == XawTextSearchError) 
-    (void) sprintf( msg, "Could not find string ``%s''.", GetString( search->search_text ) );
-  else {
+  if (pos == XawTextSearchError) {
+    char *msg1 = "Could not find string ``";
+    char *msg2 = "''.";
+    len = strlen(msg1) + strlen(msg2) +
+		strlen(GetString( search->search_text )) + 1;
+    pmsg = XtStackAlloc(len, msg);
+    if (pmsg != NULL) {
+      (void) sprintf( pmsg, "%s%s%s", msg1, GetString( search->search_text ),
+			msg2);
+    } else {
+      pmsg = msg;
+      (void) sprintf( pmsg, "Could not find string");
+    }
+  } else {
     if (dir == XawsdRight)
       XawTextSetInsertionPoint( tw, pos + text.length);
     else
@@ -849,7 +864,8 @@ struct SearchAndReplace * search;
   }
   
   XawTextUnsetSelection(tw);
-  SetSearchLabels(search, msg, "", TRUE);
+  SetSearchLabels(search, pmsg, "", TRUE);
+  XtStackFree(pmsg, msg);
   return(FALSE);
 }
 
@@ -982,13 +998,26 @@ Boolean once_only, show_current;
       if ( (new_pos == XawTextSearchError) ) {
 	if (count == 0) {
 	  char msg[BUFSIZ];
+	  char *pmsg;
+	  int len;
+	  char *msg1 = "*** Error: Could not find string ``";
+	  char *msg2 = "''. ***";
 
              /* The Raw string in find.ptr may be WC I can't use here, 
 		so I call GetString to get a tame version.*/
 
-	  (void) sprintf( msg, "%s %s %s", "*** Error: Could not find string ``",
-		  GetString( search->search_text ), "''. ***");
-	  SetSearchLabels(search, msg, "", TRUE);
+	  len = strlen(msg1) + strlen(msg2) +
+		strlen(GetString( search->search_text )) + 1;
+	  pmsg = XtStackAlloc(len, msg);
+	  if (pmsg != NULL) {
+	    (void) sprintf( pmsg, "%s%s%s", msg1,
+				GetString( search->search_text ), msg2);
+	  } else {
+	    pmsg = msg;
+	    (void) sprintf(pmsg, "*** Error: Could not find string ***");
+	  }
+	  SetSearchLabels(search, pmsg, "", TRUE);
+	  XtStackFree(pmsg, msg);
 	  return(FALSE);
 	}
 	else
@@ -1011,9 +1040,22 @@ Boolean once_only, show_current;
 
     if (XawTextReplace(tw, pos, end_pos, &replace) != XawEditDone) {
       char msg[BUFSIZ];
-      
-      (void) sprintf( msg, "'%s' with '%s'. ***", find.ptr, replace.ptr);
+      char *pmsg;
+      int len;
+      char *msg1 = "' with '";
+      char *msg2 = "'. ***";
+
+      len = 1 + strlen(msg1) + strlen(msg2) + strlen(find.ptr) +
+		strlen(replace.ptr) + 1;
+      pmsg = XtStackAlloc(len, msg);
+      if (pmsg != NULL) {
+	(void) sprintf( pmsg, "`%s%s%s%s", find.ptr, msg1, replace.ptr, msg2);
+      } else {
+	pmsg = msg;
+	(void) sprintf(pmsg, "string ***");
+      }
       SetSearchLabels(search, "*** Error while replacing", msg, TRUE);
+      XtStackFree(pmsg, msg);
       return(FALSE);
     }      
 
@@ -1164,13 +1206,20 @@ XtArgVal value;
 {
   Widget temp_widget;
   char buf[BUFSIZ];
+  char *pbuf;
+  int len;
 
-  (void) sprintf(buf, "%s.%s", FORM_NAME, name);
+  len = strlen(FORM_NAME) + strlen(name) + 2;
+  pbuf = XtStackAlloc(len, buf);
+  if (pbuf == NULL) return FALSE;
+  (void) sprintf(pbuf, "%s.%s", FORM_NAME, name);
 
-  if ( (temp_widget = XtNameToWidget(shell, buf)) != NULL) {
+  if ( (temp_widget = XtNameToWidget(shell, pbuf)) != NULL) {
     SetResource(temp_widget, res_name, value);
+    XtStackFree(pbuf, buf);
     return(TRUE);
   }
+  XtStackFree(pbuf, buf);
   return(FALSE);
 }
 
diff -up /dev/null Xaw3d-1.5E/xc/lib/Xaw3d/XawAlloc.h
--- /dev/null	2008-10-06 08:37:32.418005377 +0200
+++ Xaw3d-1.5E/xc/lib/Xaw3d/XawAlloc.h	2008-10-06 11:42:13.000000000 +0200
@@ -0,0 +1,10 @@
+/* $XFree86: xc/lib/Xaw/XawAlloc.h,v 1.1.2.1 1998/05/16 09:05:23 dawes Exp $ */
+
+#define XtStackAlloc(size, stack_cache_array)     \
+    ((size) <= sizeof(stack_cache_array)          \
+    ?  (XtPointer)(stack_cache_array)             \
+    :  XtMalloc((unsigned)(size)))
+     
+#define XtStackFree(pointer, stack_cache_array) \
+    if ((pointer) != ((XtPointer)(stack_cache_array))) XtFree(pointer); else
+
--- xaw3d-1.5e/xc/lib/Xaw3d/SmeBSB.c	2003-08-04 17:27:58.000000000 +0200
+++ xaw3d-1.5e/xc/lib/Xaw3d/SmeBSB.c	2003-08-07 15:02:39.000000000 +0200
@@ -52,6 +52,8 @@
 #include <X11/Xaw3d/Cardinals.h>
 #include <stdio.h>
 
+#include "XawAlloc.h"
+
 /* needed for abs() */
 #ifndef X_NOT_STDC_ENV
 #include <stdlib.h>
@@ -712,6 +714,8 @@
     int x, y;
     unsigned int width, height, bw;
     char buf[BUFSIZ];
+    char *pbuf;
+    int len;
     
     if (is_left) {
 	width = height = 0;
@@ -720,18 +724,24 @@
 	    if (!XGetGeometry(XtDisplayOfObject(w), 
 			    entry->sme_bsb.left_bitmap, &root, &x, &y,
 			    &width, &height, &bw, &entry->sme_bsb.left_depth)) {
-		(void) sprintf(buf, "Xaw SmeBSB Object: %s %s \"%s\".",
-			"Could not get Left Bitmap",
-			"geometry information for menu entry",
-			XtName(w));
-		XtAppError(XtWidgetToApplicationContext(w), buf);
+               char *err1 = "Xaw SmeBSB Object: Could not get Left Bitmap geometry information for menu entry ";
+	       len = strlen(err1) + strlen(XtName(w)) + 3 + 1;
+               pbuf = XtStackAlloc(len, buf);
+               if (pbuf == NULL) return;
+               sprintf(pbuf, "%s\"%s\".", err1, XtName(w));
+               XtAppError(XtWidgetToApplicationContext(w), pbuf);
+               XtStackFree(pbuf, buf);
 	    }
 #ifdef NEVER
 	    if (entry->sme_bsb.left_depth != 1) {
-		(void) sprintf(buf, "Xaw SmeBSB Object: %s \"%s\" %s.", 
-			"Left Bitmap of entry",  XtName(w),
-			"is not one bit deep");
-		XtAppError(XtWidgetToApplicationContext(w), buf);
+               char *err1 = "Xaw SmeBSB Object: Left Bitmap of entry ";
+               char *err2 = " is not one bit deep.";
+               len = strlen(err1) + strlen(err2) + strlen(XtName(w)) + 2 + 1;
+               pbuf = XtStackAlloc(len, buf);
+               if (pbuf == NULL) return;
+               sprintf(pbuf, "%s\"%s\"%s", err1, XtName(w), err2);
+               XtAppError(XtWidgetToApplicationContext(w), pbuf);
+               XtStackFree(pbuf, buf);
 	    }
 #endif
 	}
@@ -745,18 +755,24 @@
 	    if (!XGetGeometry(XtDisplayOfObject(w),
 			    entry->sme_bsb.right_bitmap, &root, &x, &y,
 			    &width, &height, &bw, &entry->sme_bsb.right_depth)) {
-		(void) sprintf(buf, "Xaw SmeBSB Object: %s %s \"%s\".",
-			"Could not get Right Bitmap",
-			"geometry information for menu entry",
-			XtName(w));
-		XtAppError(XtWidgetToApplicationContext(w), buf);
+            char *err1 = "Xaw SmeBSB Object: Could not get Right Bitmap geometry information for menu entry ";
+            len = strlen(err1) + strlen(XtName(w)) + 3 + 1;
+            pbuf = XtStackAlloc(len, buf);
+            if (pbuf == NULL) return;
+            sprintf(pbuf, "%s\"%s\".", err1, XtName(w));
+            XtAppError(XtWidgetToApplicationContext(w), pbuf);
+            XtStackFree(pbuf, buf);
 	    }
 #ifdef NEVER
 	    if (entry->sme_bsb.right_depth != 1) {
-		(void) sprintf(buf, "Xaw SmeBSB Object: %s \"%s\" %s.", 
-			"Right Bitmap of entry", XtName(w),
-			"is not one bit deep");
-		XtAppError(XtWidgetToApplicationContext(w), buf);
+            char *err1 = "Xaw SmeBSB Object: Right Bitmap of entry ";
+            char *err2 = " is not one bit deep.";
+            len = strlen(err1) + strlen(err2) + strlen(XtName(w)) + 2 + 1;
+            pbuf = XtStackAlloc(len, buf);
+            if (pbuf == NULL) return;
+            sprintf(pbuf, "%s\"%s\"%s", err1, XtName(w), err2);
+            XtAppError(XtWidgetToApplicationContext(w), pbuf);
+            XtStackFree(pbuf, buf);
 	    }
 #endif
 	}


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/Xaw3d/devel/.cvsignore,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- .cvsignore	30 Nov 2004 15:14:04 -0000	1.3
+++ .cvsignore	7 Oct 2008 20:32:07 -0000	1.4
@@ -1,3 +1 @@
-Xaw3d-1.3.tar.gz
-Xaw3d-1.5.tar.gz
 Xaw3d-1.5E.tar.gz

Xaw3d-ia64.patch:

Index: Xaw3d-ia64.patch
===================================================================
RCS file: /cvs/extras/rpms/Xaw3d/devel/Xaw3d-ia64.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Xaw3d-ia64.patch	9 Sep 2004 02:48:41 -0000	1.1
+++ Xaw3d-ia64.patch	7 Oct 2008 20:32:07 -0000	1.2
@@ -1,16 +1,18 @@
---- Xaw3d-1.5/xc/lib/Xaw3d/List.c~	Tue Oct 15 16:41:20 1996
-+++ Xaw3d-1.5/xc/lib/Xaw3d/List.c	Mon Jul 24 16:55:29 2000
-@@ -37,6 +37,7 @@
-  */
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/List.c.prototypes Xaw3d-1.5E/xc/lib/Xaw3d/List.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/List.c.prototypes	2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/List.c	2008-10-06 10:11:28.000000000 +0200
+@@ -38,6 +38,7 @@ in this Software without prior written a
  
+ #include "Xaw3dP.h"
  #include <stdio.h>
 +#include <stdlib.h>
  #include <ctype.h>
- 
  #include <X11/IntrinsicP.h>
---- Xaw3d-1.5/xc/lib/Xaw3d/MultiSink.c~	Tue Oct 15 16:41:20 1996
-+++ Xaw3d-1.5/xc/lib/Xaw3d/MultiSink.c	Mon Jul 24 16:58:09 2000
-@@ -81,6 +81,7 @@
+ #include <X11/StringDefs.h>
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c.prototypes Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c.prototypes	1996-10-15 16:41:20.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c	2008-10-06 10:10:37.000000000 +0200
+@@ -81,6 +81,7 @@ SOFTWARE.
  #include <X11/Xaw3d/TextP.h>
  #include "XawI18n.h"
  #include <stdio.h>
@@ -18,15 +20,14 @@
  #include <ctype.h>
  
  #ifdef GETLASTPOS
---- Xaw3d-1.5/xc/lib/Xaw3d/Text.c~	Thu May 14 21:03:24 1998
-+++ Xaw3d-1.5/xc/lib/Xaw3d/Text.c	Mon Jul 24 17:00:54 2000
-@@ -71,6 +71,7 @@
- 
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.prototypes Xaw3d-1.5E/xc/lib/Xaw3d/Text.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.prototypes	2003-02-10 18:28:13.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Text.c	2008-10-06 10:11:11.000000000 +0200
+@@ -74,6 +74,7 @@ SOFTWARE.
+ #include <X11/Xaw3d/ThreeDP.h>
  #include <X11/Xfuncs.h>
  #include <ctype.h>		/* for isprint() */
-+#include <stdlib.h>		/* for abs() */
++#include <stdlib.h>
  
  #ifndef MAX_LEN_CT
  #define MAX_LEN_CT 6		/* for sequence: ESC $ ( A \xx \xx */
-
-


Index: Xaw3d.spec
===================================================================
RCS file: /cvs/extras/rpms/Xaw3d/devel/Xaw3d.spec,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- Xaw3d.spec	19 Feb 2008 10:03:43 -0000	1.33
+++ Xaw3d.spec	7 Oct 2008 20:32:07 -0000	1.34
@@ -1,25 +1,18 @@
-Summary: A version of the MIT Athena widget set for X.
+Summary: A version of the MIT Athena widget set for X
 Name: Xaw3d
 Version: 1.5E
-Release: 11.1
+Release: 12%{?dist}
 Group: System Environment/Libraries
 Source: ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-%{version}.tar.gz
-Source1: ftp://ftp.x.org/contrib/widgets/Xaw3d/R6/Xaw3d-1.3.tar.gz
-Source2: Imakefile
 Patch: Xaw3d-1.5E-xorg-imake.patch
-Patch1: Xaw3d-1.3-glibc.patch
-Patch2: Xaw3d-1.3-X11R6.3.patch
-Patch3: xaw3d.patch
-Patch4: Xaw3d-1.3-misc.patch
-Patch5: Xaw3d-ia64.patch
-Patch6: Xaw3d-1.5-i18n.patch
-Patch7: Xaw3d-1.5-scrollbar2.patch
+Patch1: xaw3d.patch
+Patch2: Xaw3d-ia64.patch
+Patch3: Xaw3d-1.5-i18n.patch
+Patch4: Xaw3d-1.5-box.c.patch
+Patch5: Xaw3d-1.5-debian-fixes.patch
 License: MIT
-Prefix: /usr
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
-
-Prereq: fileutils
-Prereq: /sbin/ldconfig
+URL: http://directory.fsf.org/project/xaw3d/
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires: libXmu-devel
 BuildRequires: libXt-devel
@@ -42,9 +35,9 @@
 those applications.
 
 %package devel
-Summary: Header files and static libraries for development using Xaw3d.
+Summary: Header files and static libraries for development using Xaw3d
 Group: Development/Libraries
-Requires: %{name} = %{version}
+Requires: %{name} = %{version}-%{release}
 Requires: libXmu-devel
 Requires: libXt-devel
 Requires: libSM-devel
@@ -63,14 +56,20 @@
 using the Xaw3d widget set.  You'll also need to install the Xaw3d
 package.
 
+
 %prep
 %setup -q -c
-
 # Xaw3d7
 pushd xc/lib/Xaw3d
 ln -s .. X11
 %patch -p0 -b .config
 popd
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+
 
 %build
 # Xaw3d7
@@ -79,20 +78,24 @@
 make CDEBUGFLAGS="${RPM_OPT_FLAGS} -DARROW_SCROLLBAR"
 popd
 
+
 %install
 rm -rf $RPM_BUILD_ROOT
-
 make install DESTDIR=$RPM_BUILD_ROOT SHLIBDIR=%{_libdir} INCDIR=%{_includedir} -C xc/lib/Xaw3d
 
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+
 %post -p /sbin/ldconfig
 
 %postun -p /sbin/ldconfig
 
+
 %files
 %defattr(-,root,root)
+%doc xc/lib/Xaw3d/README.XAW3D
 %{_libdir}/*.so.*
 
 %files devel
@@ -101,6 +104,16 @@
 %{_includedir}/X11/Xaw3d
 
 %changelog
+* Tue Oct  6 2008 Hans de Goede <hdegoede at redhat.com> 1.5E-12
+- Remove obsolete PreReq and Prefix stuff from specfile
+- Fix BuildRoot to match the guidelines
+- Require base package by full EVR from devel package
+- Drop non relevant Patches and Sources
+- Rebase the still relevant patches
+- Actually apply the still relevant patches
+- Add a patch from Debian fixing an infinite loop (rh436998)
+- Add patches from Debian fixes various potential bufferoverflows
+
 * Tue Feb 19 2008 Fedora Release Engineering <rel-eng at fedoraproject.org> - 1.5E-11.1
 - Autorebuild for GCC 4.3
 
@@ -259,7 +272,7 @@
 - translations modified for de, fr, tr
 
 * Tue Nov 04 1997 Erik Troan <ewt at redhat.com>
-- don't lave an improper return code from %pre
+- don't lave an improper return code from %%pre
 
 * Mon Nov 03 1997 Cristian Gafton <gafton at redhat.com>
 - take care of the old location of the Xaw3d includes in case that one exist


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/Xaw3d/devel/sources,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sources	30 Nov 2004 15:14:04 -0000	1.3
+++ sources	7 Oct 2008 20:32:07 -0000	1.4
@@ -1,2 +1 @@
-9eaac2b8cae978f3a740ebb6933b898e  Xaw3d-1.3.tar.gz
 29ecfdcd6bcf47f62ecfd672d31269a1  Xaw3d-1.5E.tar.gz

xaw3d.patch:

Index: xaw3d.patch
===================================================================
RCS file: /cvs/extras/rpms/Xaw3d/devel/xaw3d.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- xaw3d.patch	9 Sep 2004 02:48:41 -0000	1.1
+++ xaw3d.patch	7 Oct 2008 20:32:07 -0000	1.2
@@ -1,6 +1,7 @@
---- Xaw3d-1.5/xc/lib/Xaw3d/Scrollbar.c	Tue Oct 15 07:41:21 1996
-+++ Xaw3d-1.5.ia64/xc/lib/Xaw3d/Scrollbar.c	Tue May  9 07:02:52 2000
-@@ -1178,7 +1178,11 @@
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c.orig Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c.orig	2003-02-10 18:22:26.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c	2008-10-06 10:07:46.000000000 +0200
+@@ -1087,7 +1087,11 @@ static void NotifyThumb (w, event, param
      Cardinal *num_params;	/* unused */
  {
      register ScrollbarWidget sbw = (ScrollbarWidget) w;
@@ -11,20 +12,19 @@
 +    } foo;
 +    foo.top = sbw->scrollbar.top;
  
- #ifndef ARROW_SCROLLBAR
+ #ifndef XAW_ARROW_SCROLLBARS
      if (sbw->scrollbar.direction == 0) return; /* if no StartScroll */
-@@ -1204,10 +1208,10 @@
-        there is no problem since in this case there is always a constant
-        integer number of pixels the thumb must be moved in order to scroll
-        to the next line/column. */
+@@ -1116,10 +1120,10 @@ static void NotifyThumb (w, event, param
+     /* Removed the dependancy on scrollbar arrows. Xterm as distributed in
+        X11R6.6 by The XFree86 Project wants this correction, with or without
+        the arrows. */
 -    top += 0.0001;
 +    foo.top += 0.0001;
- #endif
+ /* #endif */
 -    XtCallCallbacks (w, XtNthumbProc, *(XtPointer*)&top);
 -    XtCallCallbacks (w, XtNjumpProc, (XtPointer)&top);
 +    XtCallCallbacks (w, XtNthumbProc, foo.pt);
 +    XtCallCallbacks (w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
  }
  
-
-
+ 


--- Imakefile DELETED ---


--- Xaw3d-1.3-X11R6.3.patch DELETED ---


--- Xaw3d-1.3-glibc.patch DELETED ---


--- Xaw3d-1.3-misc.patch DELETED ---


--- Xaw3d-1.5-scrollbar2.patch DELETED ---




More information about the scm-commits mailing list