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

-- 


Reply via email to