diff options
| -rw-r--r-- | ChangeLog | 3 | ||||
| -rw-r--r-- | src/filelist.c | 13 | 
2 files changed, 16 insertions, 0 deletions
| @@ -7,6 +7,9 @@ git HEAD        <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655431>      * Do not refer to --help unless help is compiled in        <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657171> +    * Do not overwrite filelist file if it actually is an image +      (-f and -F may get mixed up) +      <https://github.com/derf/feh/issues/79>  Mon, 02 Jan 2012 11:54:01 +0100  Daniel Friesel <derf@finalrewind.org> diff --git a/src/filelist.c b/src/filelist.c index 6439b9d..94baa06 100644 --- a/src/filelist.c +++ b/src/filelist.c @@ -460,10 +460,23 @@ gib_list *feh_read_filelist(char *filename)  	FILE *fp;  	gib_list *list = NULL;  	char s[1024], s1[1024]; +	Imlib_Image tmp_im; +	struct stat st;  	if (!filename)  		return(NULL); +	/* +	 * feh_load_image will fail horribly if filename is not seekable +	 */ +	if (!stat(filename, &st) && S_ISREG(st.st_mode) && +			feh_load_image_char(&tmp_im, filename)) { +		weprintf("Filelist file %s is an image, refusing to use it.\n" +			"Did you mix up -f and -F?", filename); +		opt.filelistfile = NULL; +		return NULL; +	} +  	errno = 0;  	if ((fp = fopen(filename, "r")) == NULL) {  		/* return quietly, as it's okay to specify a filelist file that doesn't | 
