andrei Tue Jan 25 17:00:15 2005 EDT Modified files: (Branch: PHP_5_0) /php-src NEWS /php-src/ext/standard browscap.c /php-src/sapi/embed php_embed.c Log: MFB (Fix several egregious leaks in ext/browscap and sapi/embed). http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.213&r2=1.1760.2.214&ty=u Index: php-src/NEWS diff -u php-src/NEWS:1.1760.2.213 php-src/NEWS:1.1760.2.214 --- php-src/NEWS:1.1760.2.213 Tue Jan 25 08:43:27 2005 +++ php-src/NEWS Tue Jan 25 17:00:11 2005 @@ -1,6 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2005, PHP 5.0.4 +- Fixed several egregious leaks in ext/browscap and sapi/embed. (Andrei) - Added Oracle Instant Client support. (cjbj at hotmail dot com, Tony) - Added length and charsetnr for field array and object in mysqli. (Georg) - Changed foreach() to throw an exception if IteratorAggregate::getIterator() http://cvs.php.net/diff.php/php-src/ext/standard/browscap.c?r1=1.82&r2=1.82.2.1&ty=u Index: php-src/ext/standard/browscap.c diff -u php-src/ext/standard/browscap.c:1.82 php-src/ext/standard/browscap.c:1.82.2.1 --- php-src/ext/standard/browscap.c:1.82 Mon Mar 15 16:26:39 2004 +++ php-src/ext/standard/browscap.c Tue Jan 25 17:00:14 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: browscap.c,v 1.82 2004/03/15 21:26:39 jay Exp $ */ +/* $Id: browscap.c,v 1.82.2.1 2005/01/25 22:00:14 andrei Exp $ */ #include "php.h" #include "php_regex.h" @@ -33,12 +33,17 @@ /* OBJECTS_FIXME: This whole extension needs going through. The use of objects looks pretty broken here */ -static void browscap_entry_dtor(zval *pvalue) +static void browscap_entry_dtor(zval **pvalue) { - if (Z_TYPE_P(pvalue) == IS_ARRAY) { - zend_hash_destroy(Z_ARRVAL_P(pvalue)); - free(Z_ARRVAL_P(pvalue)); + if (Z_TYPE_PP(pvalue) == IS_ARRAY) { + zend_hash_destroy(Z_ARRVAL_PP(pvalue)); + free(Z_ARRVAL_PP(pvalue)); + } else if (Z_TYPE_PP(pvalue) == IS_STRING) { + if (Z_STRVAL_PP(pvalue) && Z_STRVAL_PP(pvalue) != empty_string) { + free(Z_STRVAL_PP(pvalue)); + } } + free(*pvalue); } /* {{{ convert_browscap_pattern @@ -97,7 +102,7 @@ new_property = (zval *) malloc(sizeof(zval)); INIT_PZVAL(new_property); - Z_STRVAL_P(new_property) = Z_STRLEN_P(arg2)?zend_strndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2)):""; + Z_STRVAL_P(new_property) = Z_STRLEN_P(arg2)?zend_strndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2)):empty_string; Z_STRLEN_P(new_property) = Z_STRLEN_P(arg2); Z_TYPE_P(new_property) = IS_STRING; @@ -123,6 +128,7 @@ section_properties = (HashTable *) malloc(sizeof(HashTable)); zend_hash_init(section_properties, 0, NULL, (dtor_func_t) browscap_entry_dtor, 1); current_section->value.ht = section_properties; + current_section->type = IS_ARRAY; zend_hash_update(&browser_hash, Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)+1, (void *) ¤t_section, sizeof(zval *), NULL); Z_STRVAL_P(processed) = Z_STRVAL_P(arg1); http://cvs.php.net/diff.php/php-src/sapi/embed/php_embed.c?r1=1.8&r2=1.8.2.1&ty=u Index: php-src/sapi/embed/php_embed.c diff -u php-src/sapi/embed/php_embed.c:1.8 php-src/sapi/embed/php_embed.c:1.8.2.1 --- php-src/sapi/embed/php_embed.c:1.8 Thu Jan 8 03:18:11 2004 +++ php-src/sapi/embed/php_embed.c Tue Jan 25 17:00:14 2005 @@ -15,7 +15,7 @@ | Author: Edin Kadribasic <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: php_embed.c,v 1.8 2004/01/08 08:18:11 andi Exp $ */ +/* $Id: php_embed.c,v 1.8.2.1 2005/01/25 22:00:14 andrei Exp $ */ #include "php_embed.h" @@ -210,6 +210,7 @@ { php_request_shutdown((void *) 0); php_module_shutdown(TSRMLS_C); + sapi_shutdown(); #ifdef ZTS tsrm_shutdown(); #endif
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php