cvs: php-src(PHP_4_3) /ext/standard image.c

From: Date: Tue, 04 Nov 2003 01:38:34 +0000
Subject: cvs: php-src(PHP_4_3) /ext/standard image.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-24416@lists.php.net to get a copy of this message
iliaa Mon Nov 3 20:38:34 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/standard image.c Log: MFH: Fixed bug #25581 (getimagesize () return incorrect values on bitmap (os2) files). Index: php-src/ext/standard/image.c diff -u php-src/ext/standard/image.c:1.72.2.11 php-src/ext/standard/image.c:1.72.2.12 --- php-src/ext/standard/image.c:1.72.2.11 Tue Sep 9 15:27:41 2003 +++ php-src/ext/standard/image.c Mon Nov 3 20:38:33 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: image.c,v 1.72.2.11 2003/09/09 19:27:41 sniper Exp $ */ +/* $Id: image.c,v 1.72.2.12 2003/11/04 01:38:33 iliaa Exp $ */ #include "php.h" #include <stdio.h> @@ -143,18 +143,29 @@ static struct gfxinfo *php_handle_bmp (php_stream * stream TSRMLS_DC) { struct gfxinfo *result = NULL; - unsigned char dim[12]; + unsigned char dim[16]; + int size; - if (php_stream_seek(stream, 15, SEEK_CUR)) + if (php_stream_seek(stream, 11, SEEK_CUR)) return NULL; if (php_stream_read(stream, dim, sizeof(dim)) != sizeof(dim)) return NULL; - result = (struct gfxinfo *) ecalloc (1, sizeof(struct gfxinfo)); - result->width = (((unsigned int)dim[ 3]) << 24) + (((unsigned int)dim[ 2]) << 16) + (((unsigned int)dim[ 1]) << 8) + ((unsigned int) dim[ 0]); - result->height = (((unsigned int)dim[ 7]) << 24) + (((unsigned int)dim[ 6]) << 16) + (((unsigned int)dim[ 5]) << 8) + ((unsigned int) dim[ 4]); - result->bits = (((unsigned int)dim[11]) << 8) + ((unsigned int)dim[10]); + size = (((unsigned int)dim[ 3]) << 24) + (((unsigned int)dim[ 2]) << 16) + (((unsigned int)dim[ 1]) << 8) + ((unsigned int) dim[ 0]); + if (size == 12) { + result = (struct gfxinfo *) ecalloc (1, sizeof(struct gfxinfo)); + result->width = (((unsigned int)dim[ 5]) << 8) + ((unsigned int) dim[ 4]); + result->height = (((unsigned int)dim[ 7]) << 8) + ((unsigned int) dim[ 6]); + result->bits = ((unsigned int)dim[11]); + } else if (size > 12 && (size <= 64 || size == 108)) { + result = (struct gfxinfo *) ecalloc (1, sizeof(struct gfxinfo)); + result->width = (((unsigned int)dim[ 7]) << 24) + (((unsigned int)dim[ 6]) << 16) + (((unsigned int)dim[ 5]) << 8) + ((unsigned int) dim[ 4]); + result->height = (((unsigned int)dim[11]) << 24) + (((unsigned int)dim[10]) << 16) + (((unsigned int)dim[ 9]) << 8) + ((unsigned int) dim[ 8]); + result->bits = (((unsigned int)dim[15]) << 8) + ((unsigned int)dim[14]); + } else { + return NULL; + } return result; }

« previous php.cvs (#24416) next »