Hi, On Sun, May 08, 2016 at 11:41:17AM +0200, Maxime de Roucy wrote: > If -f argument is a directory add all the files (and only files) it > containes to the config files list.
I think this is a nice addition, it completes well the ability to load an arbitrary file list. However I cannot merge it as is, there is a huge buffer overflow here : > + char filename[MAX_CLI_DIRFILE_NAME]; > + struct dirent *dir_entry = dir_entries[dir_entries_it]; > + > + strcpy(filename, wl->s); > + strcat(filename, "/"); > + strcat(filename, dir_entry->d_name); You'd rather use snprintf("%s/%s") and check the result. As a hint, you should always consider that strcpy() with a variable on input is almost always a bug, and that strcat() is always a bug. I have another comment here, please try to factor the error messages using a goto, this block appears at least 3 times : > + > + if (stat(filename, &file_stat)) { > + Alert("Cannot open configuration file %s : > %s\n", > + filename, > + strerror(errno)); > + exit(1); > + } I think it would be easier to move all this patch into a dedicated function. Here instead of calloc+strcpy, you can simply use strdup() : > + wlt->s = calloc(strlen(filename) + 1, > sizeof(*wlt->s)); > + if (!wlt->s) { > + Alert("Cannot load configuration files > %s : out of memory.\n", > + filename); > + exit(1); > + } > + strcpy(wlt->s, filename); Otherwise it looks good. Thanks, Willy