Hello Scott,

Tuesday, September 16, 2008, 12:13:25 AM, you wrote:

> scottmac                Mon Sep 15 22:13:25 2008 UTC

>   Modified files:              (Branch: PHP_5_3)
>     /php-src    NEWS 
>     /php-src/ext/fileinfo       fileinfo.c 
>   Log:
>   Fixed bug #46086 (Segfault when accessing fileinfo class property)
>   
> http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.317&r2=1.2027.2.547.2.965.2.318&diff_format=u
> Index: php-src/NEWS
> diff -u php-src/NEWS:1.2027.2.547.2.965.2.317
> php-src/NEWS:1.2027.2.547.2.965.2.318
> --- php-src/NEWS:1.2027.2.547.2.965.2.317       Sun Sep 14 06:47:08 2008
> +++ php-src/NEWS        Mon Sep 15 22:13:25 2008
> @@ -2,9 +2,12 @@
> 
> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>  ?? ??? 200?, PHP 5.3.0 Alpha 3
>  - Upgraded bundled PCRE to version 7.8. (Nuno)
> +- Upgraded bundled sqlite to version 3.6.2. (Scott)
>  - Changed error level E_ERROR into E_WARNING in Soap extension methods 
>    parameter validation. (Felipe)
>  
> +- Fixed bug #46086 (Segfault when accessing fileinfo class properties).
> +  (Scott)
>  - Fixed bug #46072 (Compile failure under IRIX 6.5.30 building util.c) (Greg)
>  - Fixed bug #46060 (Phar::addEmptyDir() breaks) (Greg)
>  - Fixed bug #46042 (memory leaks with reflection of mb_convert_encoding()).
> http://cvs.php.net/viewvc.cgi/php-src/ext/fileinfo/fileinfo.c?r1=1.20.2.13&r2=1.20.2.14&diff_format=u
> Index: php-src/ext/fileinfo/fileinfo.c
> diff -u php-src/ext/fileinfo/fileinfo.c:1.20.2.13
> php-src/ext/fileinfo/fileinfo.c:1.20.2.14
> --- php-src/ext/fileinfo/fileinfo.c:1.20.2.13   Sat Sep 13 21:32:21 2008
> +++ php-src/ext/fileinfo/fileinfo.c     Mon Sep 15 22:13:25 2008
> @@ -16,7 +16,7 @@
>    +----------------------------------------------------------------------+
>  */
>  
> -/* $Id: fileinfo.c,v 1.20.2.13 2008/09/13 21:32:21 tony2001 Exp $ */
> +/* $Id: fileinfo.c,v 1.20.2.14 2008/09/15 22:13:25 scottmac Exp $ */
>  
>  #ifdef HAVE_CONFIG_H
>  #include "config.h"
> @@ -100,15 +100,11 @@
>         zend_object_value retval;
>         struct finfo_object *intern;
>  
> -       intern = ecalloc(1, sizeof(struct finfo_object));
> -       intern->zo.ce = class_type;
> -       intern->zo.properties = NULL;
> -#if ZEND_MODULE_API_NO >= 20050922
> -       intern->zo.guards = NULL;
> -#else
> -       intern->zo.in_get = 0;
> -       intern->zo.in_set = 0;
> -#endif
> +       intern = emalloc(sizeof(struct finfo_object));
The ecallow actually seemed to be correct as it made sure that both the
inherited stad zend object struct gets initialized as well as anything
beyon that. Now calling zend_object_std_init() obviously prevents a
maintenance nightmare and in this case fixes an error. Still the rest of
the struct needs to be initialized as well.
> +
> +       zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
> +       zend_hash_copy(intern->zo.properties,
> &class_type->default_properties, (copy_ctor_func_t) zval_add_ref,(void *) 
> &tmp, sizeof(zval *));
> +
>         intern->ptr = NULL;
>  
>         retval.handle = zend_objects_store_put(intern,
> finfo_objects_dtor, NULL, NULL TSRMLS_CC);






Best regards,
 Marcus


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

Reply via email to