--- 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)