helly Wed Feb 23 17:49:32 2005 EDT Modified files: /php-src/ext/standard image.c Log: - Slightly redesign # More to follow, explanation follows at more public place http://cvs.php.net/diff.php/php-src/ext/standard/image.c?r1=1.102&r2=1.103&ty=u Index: php-src/ext/standard/image.c diff -u php-src/ext/standard/image.c:1.102 php-src/ext/standard/image.c:1.103 --- php-src/ext/standard/image.c:1.102 Mon Oct 4 16:42:30 2004 +++ php-src/ext/standard/image.c Wed Feb 23 17:49:32 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: image.c,v 1.102 2004/10/04 20:42:30 iliaa Exp $ */ +/* $Id: image.c,v 1.103 2005/02/23 22:49:32 helly Exp $ */ #include "php.h" #include <stdio.h> @@ -866,38 +866,41 @@ int chunkId; int size; - if (php_stream_read(stream, a, 8) != 8) + if (php_stream_read(stream, a, 8) != 8) { return NULL; - if (strncmp(a+4, "ILBM", 4) && strncmp(a+4, "PBM ", 4)) + } + if (strncmp(a+4, "ILBM", 4) && strncmp(a+4, "PBM ", 4)) { return NULL; - - result = (struct gfxinfo *) ecalloc(1, sizeof(struct gfxinfo)); + } /* loop chunks to find BMHD chunk */ do { if (php_stream_read(stream, a, 8) != 8) { - efree(result); return NULL; } chunkId = php_ifd_get32s(a+0, 1); size = php_ifd_get32s(a+4, 1); + if (size < 0) { + return NULL; + } if ((size & 1) == 1) { size++; } if (chunkId == 0x424d4844) { /* BMHD chunk */ if (php_stream_read(stream, a, 9) != 9) { - efree(result); return NULL; } + result = (struct gfxinfo *) ecalloc(1, sizeof(struct gfxinfo)); result->width = php_ifd_get16s(a+0, 1); result->height = php_ifd_get16s(a+2, 1); result->bits = a[8] & 0xff; result->channels = 0; - if (result->width > 0 && result->height > 0 && result->bits > 0 && result->bits < 33) + if (result->width > 0 && result->height > 0 && result->bits > 0 && result->bits < 33) { return result; + } + efree(result); } else { if (php_stream_seek(stream, size, SEEK_CUR)) { - efree(result); return NULL; } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php