raster pushed a commit to branch master.

http://git.enlightenment.org/legacy/imlib2.git/commit/?id=b0a42f8763068aaffd0b769a3c5331b9cb488ad7

commit b0a42f8763068aaffd0b769a3c5331b9cb488ad7
Author: Fabian Keil <[email protected]>
Date:   Wed Dec 3 15:21:02 2014 +0100

    load_pnm: Deal with fread() errors consistently
    
    Was supposed to fixes:
    ==24603== Invalid read of size 1
    ==24603==    at 0x1FCD748: __imlib_ScaleAARGB (scale.c:990)
    ==24603==    by 0x1F9BF81: __imlib_RenderImage (rend.c:405)
    ==24603==    by 0x1F0F82C: imlib_render_image_part_on_drawable_at_size 
(api.c:1886)
    ==24603==    by 0x40CD75: gib_imlib_render_image_part_on_drawable_at_size 
(gib_imlib.c:231)
    ==24603==    by 0x42C732: winwidget_render_image (winwidget.c:576)
    ==24603==    by 0x417ACA: feh_event_handle_keypress (keyevents.c:598)
    ==24603==    by 0x4190DE: feh_main_iteration (main.c:119)
    ==24603==    by 0x418F45: main (main.c:82)
    ==24603==  Address 0x4824832 is 3,650 bytes inside a block of size 4,096 
free'd
    ==24603==    at 0x103E498: free (in 
/usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so)
    ==24603==    by 0x234157D: fclose (fclose.c:62)
    ==24603==    by 0x5B3CD7F: load (loader_pnm.c:540)
    ==24603==    by 0x1F7D70F: __imlib_LoadImage (image.c:1041)
    ==24603==    by 0x1F090E4: imlib_load_image_with_error_return (api.c:1299)
    ==24603==    by 0x40F47B: feh_load_image (imlib.c:252)
    ==24603==    by 0x42CA0E: winwidget_loadimage (winwidget.c:753)
    ==24603==    by 0x42C918: winwidget_create_from_file (winwidget.c:126)
    ==24603==    by 0x421869: init_slideshow_mode (slideshow.c:62)
    ==24603==    by 0x418F13: main (main.c:78)
    when using feh to scale input/queue/id:000407,src:000226,op:havoc,rep:32
    but isn't sufficient by itself.
    
    Still looks correct to me, though.
---
 src/modules/loaders/loader_pnm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/modules/loaders/loader_pnm.c b/src/modules/loaders/loader_pnm.c
index daf67df..509523c 100644
--- a/src/modules/loaders/loader_pnm.c
+++ b/src/modules/loaders/loader_pnm.c
@@ -373,7 +373,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
              for (y = 0; y < h; y++)
                {
                   if (!fread(data, w * 1, 1, f))
-                     break;
+                     goto quit_error;
 
                   ptr = data;
                   if (v == 0 || v == 255)
@@ -415,7 +415,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
              for (y = 0; y < h; y++)
                {
                   if (!fread(data, w * 3, 1, f))
-                     break;
+                     goto quit_error;
 
                   ptr = data;
                   if (v == 0 || v == 255)
@@ -457,7 +457,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
              for (y = 0; y < h; y++)
                {
                   if (!fread(data, w * 1, 1, f))
-                     break;
+                     goto quit_error;
 
                   ptr = data;
                   for (x = 0; x < w; x++)
@@ -490,7 +490,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
              for (y = 0; y < h; y++)
                {
                   if (!fread(data, w * 4, 1, f))
-                     break;
+                     goto quit_error;
 
                   ptr = data;
                   if (v == 0 || v == 255)

-- 


Reply via email to