andrei Tue Jan 25 16:26:43 2005 EDT
Modified files: (Branch: PHP_4_3)
/php-src NEWS
/php-src/ext/standard browscap.c
/php-src/sapi/embed php_embed.c
Log:
Fix several egregious leaks in ext/browscap and sapi/embed.
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.817&r2=1.1247.2.818&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.817 php-src/NEWS:1.1247.2.818
--- php-src/NEWS:1.1247.2.817 Tue Jan 25 08:43:36 2005
+++ php-src/NEWS Tue Jan 25 16:26:40 2005
@@ -1,6 +1,7 @@
PHP 4 NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, Version 4.3.11
+- Fixed several egregious leaks in ext/browscap and sapi/embed. (Andrei)
- Added Oracle Instant Client support. (cjbj at hotmail dot com, Tony)
- Changed phpize not to require libtool. (Jani)
- Fixed build system to always use bundled libtool files. (Jani)
http://cvs.php.net/diff.php/php-src/ext/standard/browscap.c?r1=1.60.2.17&r2=1.60.2.18&ty=u
Index: php-src/ext/standard/browscap.c
diff -u php-src/ext/standard/browscap.c:1.60.2.17
php-src/ext/standard/browscap.c:1.60.2.18
--- php-src/ext/standard/browscap.c:1.60.2.17 Mon Mar 15 16:27:01 2004
+++ php-src/ext/standard/browscap.c Tue Jan 25 16:26:42 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: browscap.c,v 1.60.2.17 2004/03/15 21:27:01 jay Exp $ */
+/* $Id: browscap.c,v 1.60.2.18 2005/01/25 21:26:42 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.1.2.4&r2=1.1.2.5&ty=u
Index: php-src/sapi/embed/php_embed.c
diff -u php-src/sapi/embed/php_embed.c:1.1.2.4
php-src/sapi/embed/php_embed.c:1.1.2.5
--- php-src/sapi/embed/php_embed.c:1.1.2.4 Wed Jan 29 10:42:43 2003
+++ php-src/sapi/embed/php_embed.c Tue Jan 25 16:26:42 2005
@@ -15,7 +15,7 @@
| Author: Edin Kadribasic <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_embed.c,v 1.1.2.4 2003/01/29 15:42:43 edink Exp $ */
+/* $Id: php_embed.c,v 1.1.2.5 2005/01/25 21:26:42 andrei Exp $ */
#include "php_embed.h"
@@ -213,6 +213,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