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

Reply via email to