On Thu, 24 Feb 2005 00:12:15 -0000
"Marcus Boerger" <[EMAIL PROTECTED]> wrote:

> helly         Wed Feb 23 19:12:15 2005 EDT
> 
>   Modified files:              
>     /php-src/ext/standard     image.c 
>   Log:
>   - Prevent superflous memory allocation

Marcus, this patch breaks JP2 support.

See these tests (they fail with the patch):
php-src/ext/standard/tests/image/getimagesize.phpt
php-src/ext/standard/tests/image/image_type_to_mime_type.phpt

   
> http://cvs.php.net/diff.php/php-src/ext/standard/image.c?r1=1.104&r2=1.105&ty=u
> Index: php-src/ext/standard/image.c
> diff -u php-src/ext/standard/image.c:1.104
> php-src/ext/standard/image.c:1.105 ---
> php-src/ext/standard/image.c:1.104    Wed Feb 23 18:39:36 2005 +++ 
> php-src/ext/standard/image.c       Wed Feb 23 19:12:15 2005
> @@ -17,7 +17,7 @@
>     +----------------------------------------------------------------
>     ------+
>   */
>  
> -/* $Id: image.c,v 1.104 2005/02/23 23:39:36 iliaa Exp $ */
> +/* $Id: image.c,v 1.105 2005/02/24 00:12:15 helly Exp $ */
>  
>  #include "php.h"
>  #include <stdio.h>
> @@ -867,10 +867,11 @@
>   */
>  static struct gfxinfo *php_handle_iff(php_stream * stream TSRMLS_DC)
>  {
> -     struct gfxinfo *result = NULL;
> +     struct gfxinfo * result;
>       unsigned char a[10];
>       int chunkId;
>       int size;
> +     short width, height, bits;
>  
>       if (php_stream_read(stream, a, 8) != 8) {
>               return NULL;
> @@ -893,18 +894,20 @@
>                       size++;
>               }
>               if (chunkId == 0x424d4844) { /* BMHD chunk */
> -                     if (php_stream_read(stream, a, 9) != 9) {
> +                     if (size < 9 || php_stream_read(stream, a, 9) != 9) {
>                               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) { +                    width  =
> php_ifd_get16s(a+0, 1); +                     height = php_ifd_get16s(a+2, 1);
> +                     bits   = a[8] & 0xff;
> +                     if (width > 0 && height > 0 && bits > 0 && bits < 33) {
> +                             result = (struct gfxinfo *) ecalloc(1, 
> sizeof(struct
> gfxinfo)); +                          result->width    = width;
> +                             result->height   = height;
> +                             result->bits     = bits;
> +                             result->channels = 0;
>                               return result;
>                       }
> -                     efree(result);
>               } else {
>                       if (php_stream_seek(stream, size, SEEK_CUR)) {
>                               return NULL;
> 
> -- 
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 


-- 
Wbr, 
Antony Dovgal aka tony2001
[EMAIL PROTECTED]

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


Reply via email to