iliaa           Thu Nov  7 11:37:48 2002 EDT

  Modified files:              
    /php4/ext/standard  image.c 
  Log:
  Fixed a crash in image_type_to_mime_type(), when a non integer value is 
  passed to the function.
  Fixed Width/Height detection of bmp files on big endian systems.
  Added bit depth detection for bmp files.
  
  
Index: php4/ext/standard/image.c
diff -u php4/ext/standard/image.c:1.69 php4/ext/standard/image.c:1.70
--- php4/ext/standard/image.c:1.69      Wed Sep 18 16:37:24 2002
+++ php4/ext/standard/image.c   Thu Nov  7 11:37:46 2002
@@ -16,7 +16,7 @@
    |          Marcus Boerger <[EMAIL PROTECTED]>                              |
    +----------------------------------------------------------------------+
  */
-/* $Id: image.c,v 1.69 2002/09/18 20:37:24 iliaa Exp $ */
+/* $Id: image.c,v 1.70 2002/11/07 16:37:46 iliaa Exp $ */
 /*
  * Based on Daniel Schmitt's imageinfo.c which carried the following
  * Copyright notice.
@@ -168,15 +168,23 @@
 
        struct {
                unsigned long in_width, in_height;
+               unsigned short trash, bits;
        } dim;
 
        result = (struct gfxinfo *) ecalloc (1, sizeof(struct gfxinfo));
 
        php_stream_read(stream, temp, sizeof(temp));
+       
+#ifdef WORDS_BIGENDIAN
+       dim.in_width = (dim.in_width & 0x000000FF) << 24 | (dim.in_width & 0x0000FF00) 
+<< 8 | (dim.in_width & 0x00FF0000) >> 8 | (dim.in_width & 0xFF000000) >> 24;
+       dim.in_height = (dim.in_height & 0x000000FF) << 24 | (dim.in_height & 
+0x0000FF00) << 8 | (dim.in_height & 0x00FF0000) >> 8 | (dim.in_height & 0xFF000000) 
+>> 24;
+       dim.bits = (dim.bits & 0x00FF) << 8 | (dim.bits & 0xFF00) >> 8;
+#endif 
+       
        php_stream_read(stream, (char*) &dim, sizeof(dim));
        result->width    = dim.in_width;
        result->height   = dim.in_height;
-       result->bits     = 0;
+       result->bits     = dim.bits;
        result->channels = 0;
 
        return result;
@@ -836,7 +844,7 @@
        if ((arg_c!=1) || zend_get_parameters_ex(arg_c, &p_image_type) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
-       zval_dtor(*p_image_type);
+       convert_to_long_ex(p_image_type);
        ZVAL_STRING(return_value, 
(char*)php_image_type_to_mime_type(Z_LVAL_PP(p_image_type)), 1);
 }
 /* }}} */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to