Sophie

Sophie

distrib > Mandriva > current > i586 > media > contrib-release-src > by-pkgid > 9b19196514d6aa0d1d802274c3abf2f5 > files > 5

Mowitz-0.3.0-8mdv2008.1.src.rpm

--- Mowitz/MwFilesel.c~	2007-08-28 00:48:42.000000000 +0200
+++ Mowitz/MwFilesel.c	2007-08-28 00:54:49.000000000 +0200
@@ -248,22 +248,25 @@
 
 static void dir_select(Widget w, XtPointer client_data, XtPointer call_data)
 {
-	char path[1024];
-	char newpath[1024];
+	char path[PATH_MAX];
+	char newpath[PATH_MAX];
 
 	XawListReturnStruct *list_struct = (XawListReturnStruct *)call_data;
 	String string = list_struct->string;
 
-	sprintf(path, "%s/%s", MwLabelGet(fsel_dirbutton), string);
-
-	if (!realpath(path, newpath))
-		fprintf(stderr, "Couldn't realpath %s\n", path);
-
-	MwLabelSet(fsel_dirbutton, newpath);
+	if(snprintf(path, PATH_MAX, "%s/%s", MwLabelGet(fsel_dirbutton), string) >= PATH_MAX) {
+		fprintf(stderr, "Path too long %s/%s\n", MwLabelGet(fsel_dirbutton), string);
+	} else {
+		if (!realpath(path, newpath)) {
+			fprintf(stderr, "Couldn't realpath %s\n", path);
+		} else {
+			MwLabelSet(fsel_dirbutton, newpath);
 
-	XawListUnhighlight(fsel_filelist);
-	XawListUnhighlight(fsel_dirlist);
-	fsel_scan();
+			XawListUnhighlight(fsel_filelist);
+			XawListUnhighlight(fsel_dirlist);
+			fsel_scan();
+		}
+	}
 }
 
 static void make_menu(char **menu_entry_names, Widget menu)