helly Sat Oct 25 10:06:32 2003 EDT
Modified files:
/php-src/ext/standard image.c
/php-src NEWS
Log:
- 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.93 php-src/ext/standard/image.c:1.94
--- php-src/ext/standard/image.c:1.93 Tue Sep 9 15:25:55 2003
+++ php-src/ext/standard/image.c Sat Oct 25 10:06:26 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: image.c,v 1.93 2003/09/09 19:25:55 sniper Exp $ */
+/* $Id: image.c,v 1.94 2003/10/25 14:06:26 helly 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;
}
Index: php-src/NEWS
diff -u php-src/NEWS:1.1477 php-src/NEWS:1.1478
--- php-src/NEWS:1.1477 Thu Oct 9 07:26:40 2003
+++ php-src/NEWS Sat Oct 25 10:06:29 2003
@@ -43,6 +43,8 @@
(Sterling)
- Fixed visibility of __construct and __clone. (Marcus)
- Fixed bug #25756 (SimpleXML's validate_schema_file() broken). (Moriyoshi)
+- Fixed bug #25581 (getimagesize () return incorrect values on bitmap (os2)
+ files) (Marcus)
- Fixed bug #25494 (array_merge*() allows non-arrays as argument). (Jay)
- Fixed bug #24766 (strange result array from unpack()). (Moriyoshi)
- Fixed bug #24729 ($obj = new $className; causes crash when $className is not
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php