vapier pushed a commit to branch master. http://git.enlightenment.org/legacy/imlib2.git/commit/?id=560a58e61778d84953944f744a025af6ce986334
commit 560a58e61778d84953944f744a025af6ce986334 Author: Mike Frysinger <[email protected]> Date: Sat Jan 18 14:20:06 2014 -0500 check return value of fread/write funcs This fixes warnings with newer compilers/distros that enable warning flags by default: loader_zlib.c: In function 'uncompress_file': loader_zlib.c:33:17: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result] write(dest, outbuf, bytes); ^ --- src/modules/loaders/loader_argb.c | 14 ++++++++++++-- src/modules/loaders/loader_bmp.c | 22 ++++++++++++++++++---- src/modules/loaders/loader_bz2.c | 3 ++- src/modules/loaders/loader_png.c | 6 +++++- src/modules/loaders/loader_tiff.c | 6 +++++- src/modules/loaders/loader_xpm.c | 7 ++++++- src/modules/loaders/loader_zlib.c | 4 ++-- 7 files changed, 50 insertions(+), 12 deletions(-) diff --git a/src/modules/loaders/loader_argb.c b/src/modules/loaders/loader_argb.c index 6437494..57f3dcf 100644 --- a/src/modules/loaders/loader_argb.c +++ b/src/modules/loaders/loader_argb.c @@ -71,12 +71,22 @@ load(ImlibImage * im, ImlibProgressFunction progress, { int x; - fread(ptr, im->w, 4, f); + if (fread(ptr, im->w, 4, f) != 4) + { + free(ptr); + fclose(f); + return 0; + } for (x = 0; x < im->w; x++) SWAP32(ptr[x]); } #else - fread(ptr, im->w, 4, f); + if (fread(ptr, im->w, 4, f) != 4) + { + free(ptr); + fclose(f); + return 0; + } #endif ptr += im->w; if (progress) diff --git a/src/modules/loaders/loader_bmp.c b/src/modules/loaders/loader_bmp.c index 34ab42b..76419c4 100644 --- a/src/modules/loaders/loader_bmp.c +++ b/src/modules/loaders/loader_bmp.c @@ -208,14 +208,22 @@ load(ImlibImage * im, ImlibProgressFunction progress, if (ncols > 256) ncols = 256; for (i = 0; i < ncols; i++) - fread(&rgbQuads[i], 3, 1, f); + if (fread(&rgbQuads[i], 3, 1, f) != 1) + { + fclose(f); + return 0; + } } else { ncols /= 4; if (ncols > 256) ncols = 256; - fread(rgbQuads, 4, ncols, f); + if (fread(rgbQuads, 4, ncols, f) != ncols) + { + fclose(f); + return 0; + } } } else if (bitcount == 16 || bitcount == 32) @@ -293,12 +301,18 @@ load(ImlibImage * im, ImlibProgressFunction progress, im->data = malloc(w * h * sizeof(DATA32)); if (!im->data) { - fclose(f); free(buffer); + fclose(f); return 0; } - fread(buffer, imgsize, 1, f); + if (fread(buffer, imgsize, 1, f) != 1) + { + free(im->data); + free(buffer); + fclose(f); + return 0; + } fclose(f); buffer_ptr = buffer; buffer_end = buffer + imgsize; diff --git a/src/modules/loaders/loader_bz2.c b/src/modules/loaders/loader_bz2.c index 3cacd9e..8e33856 100644 --- a/src/modules/loaders/loader_bz2.c +++ b/src/modules/loaders/loader_bz2.c @@ -28,7 +28,8 @@ uncompress_file(FILE * fp, int dest) bytes = BZ2_bzRead(&error, bf, &outbuf, OUTBUF_SIZE); if (error == BZ_OK || error == BZ_STREAM_END) - write(dest, outbuf, bytes); + if (write(dest, outbuf, bytes) != bytes) + break; if (error == BZ_STREAM_END) break; diff --git a/src/modules/loaders/loader_png.c b/src/modules/loaders/loader_png.c index f7fe94f..7d67a5d 100644 --- a/src/modules/loaders/loader_png.c +++ b/src/modules/loaders/loader_png.c @@ -37,7 +37,11 @@ load(ImlibImage * im, ImlibProgressFunction progress, unsigned char buf[PNG_BYTES_TO_CHECK]; /* if we haven't read the header before, set the header data */ - fread(buf, 1, PNG_BYTES_TO_CHECK, f); + if (fread(buf, 1, PNG_BYTES_TO_CHECK, f) != PNG_BYTES_TO_CHECK) + { + fclose(f); + return 0; + } if (png_sig_cmp(buf, 0, PNG_BYTES_TO_CHECK)) { fclose(f); diff --git a/src/modules/loaders/loader_tiff.c b/src/modules/loaders/loader_tiff.c index 7f16383..8f340d6 100644 --- a/src/modules/loaders/loader_tiff.c +++ b/src/modules/loaders/loader_tiff.c @@ -278,7 +278,11 @@ load(ImlibImage * im, ImlibProgressFunction progress, if (!file) return 0; - fread(&magic_number, sizeof(uint16), 1, file); + if (fread(&magic_number, sizeof(uint16), 1, file) != 1) + { + fclose(file); + return 0; + } /* Apparently rewind(f) isn't sufficient */ fseek(file, (long)0, SEEK_SET); diff --git a/src/modules/loaders/loader_xpm.c b/src/modules/loaders/loader_xpm.c index 450f206..d7cca75 100644 --- a/src/modules/loaders/loader_xpm.c +++ b/src/modules/loaders/loader_xpm.c @@ -125,7 +125,12 @@ load(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity, xpm_parse_done(); return 0; } - fread(s, 1, 9, f); + if (fread(s, 1, 9, f) != 9) + { + fclose(f); + xpm_parse_done(); + return 0; + } rewind(f); s[9] = 0; if (strcmp("/* XPM */", s)) diff --git a/src/modules/loaders/loader_zlib.c b/src/modules/loaders/loader_zlib.c index f15cf11..ed448bb 100644 --- a/src/modules/loaders/loader_zlib.c +++ b/src/modules/loaders/loader_zlib.c @@ -29,8 +29,8 @@ uncompress_file(int src, int dest) ret = 0; break; } - else - write(dest, outbuf, bytes); + else if (write(dest, outbuf, bytes) != bytes) + break; } gzclose(gf); --
