Enlightenment CVS committal Author : raster Project : e17 Module : libs/imlib2
Dir : e17/libs/imlib2/src/modules/loaders Modified Files: loader_tga.c Log Message: fix possible overflow in tga loader =================================================================== RCS file: /cvs/e/e17/libs/imlib2/src/modules/loaders/loader_tga.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- loader_tga.c 6 Sep 2006 07:09:05 -0000 1.3 +++ loader_tga.c 4 Nov 2006 17:43:44 -0000 1.4 @@ -318,7 +318,7 @@ if (((!im->data) && (im->loader)) || (immediate_load) || (progress)) { unsigned long datasize; - unsigned char *bufptr; + unsigned char *bufptr, *bufend; DATA32 *dataptr; int y; @@ -346,6 +346,7 @@ /* bufptr is the next byte to be read from the buffer */ bufptr = filedata; + bufend = filedata + datasize; /* dataptr is the next 32-bit pixel to be filled in */ dataptr = im->data; @@ -418,9 +419,10 @@ unsigned char curbyte, red, green, blue, alpha; DATA32 *final_pixel = dataptr + im->w * im->h; - /* loop until we've got all the pixels */ - while (dataptr < final_pixel) - { + /* loop until we've got all the pixels or run out of input */ + while ((dataptr < final_pixel) && + ((bufptr + 1 + (bpp / 8)) < bufend)) + { int count; curbyte = *bufptr++; @@ -437,7 +439,7 @@ green = *bufptr++; red = *bufptr++; alpha = *bufptr++; - for (i = 0; i < count; i++) + for (i = 0; (i < count) && (dataptr < final_pixel); i++) { WRITE_RGBA(dataptr, red, green, blue, alpha); dataptr++; @@ -448,7 +450,7 @@ blue = *bufptr++; green = *bufptr++; red = *bufptr++; - for (i = 0; i < count; i++) + for (i = 0; (i < count) && (dataptr < final_pixel); i++) { WRITE_RGBA(dataptr, red, green, blue, (char)0xff); @@ -458,7 +460,7 @@ case 8: alpha = *bufptr++; - for (i = 0; i < count; i++) + for (i = 0; (i < count) && (dataptr < final_pixel); i++) { WRITE_RGBA(dataptr, alpha, alpha, alpha, (char)0xff); @@ -473,7 +475,7 @@ { int i; - for (i = 0; i < count; i++) + for (i = 0; (i < count) && (dataptr < final_pixel); i++) { switch (bpp) { ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs