tony2001 Tue Aug 19 15:16:33 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/ext/standard browscap.c
Log:
MFH: fix memleak in browscap code (noticed by Gopal)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/browscap.c?r1=1.85.2.2.2.3.2.7&r2=1.85.2.2.2.3.2.8&diff_format=u
Index: php-src/ext/standard/browscap.c
diff -u php-src/ext/standard/browscap.c:1.85.2.2.2.3.2.7
php-src/ext/standard/browscap.c:1.85.2.2.2.3.2.8
--- php-src/ext/standard/browscap.c:1.85.2.2.2.3.2.7 Thu Aug 7 12:50:17 2008
+++ php-src/ext/standard/browscap.c Tue Aug 19 15:16:33 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: browscap.c,v 1.85.2.2.2.3.2.7 2008/08/07 12:50:17 nlopess Exp $ */
+/* $Id: browscap.c,v 1.85.2.2.2.3.2.8 2008/08/19 15:16:33 tony2001 Exp $ */
#include "php.h"
#include "php_browscap.h"
@@ -118,7 +118,8 @@
char *new_key;
/* parent entry can not be same as current
section -> causes infinite loop! */
- if (!strcasecmp(Z_STRVAL_P(arg1), "parent") &&
+ if (!strcasecmp(Z_STRVAL_P(arg1), "parent") &&
+ current_section_name != NULL &&
!strcasecmp(current_section_name,
Z_STRVAL_P(arg2))
) {
zend_error(E_CORE_ERROR, "Invalid
browscap ini file: 'Parent' value can not be same as the section name: %s (in
file %s)", current_section_name, INI_STR("browscap"));
@@ -171,6 +172,9 @@
zend_hash_init(section_properties, 0, NULL,
(dtor_func_t) browscap_entry_dtor, 1);
Z_ARRVAL_P(current_section) =
section_properties;
Z_TYPE_P(current_section) = IS_ARRAY;
+ if (current_section_name) {
+ free(current_section_name);
+ }
current_section_name =
zend_strndup(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1));
zend_hash_update(&browser_hash,
Z_STRVAL_P(arg1), Z_STRLEN_P(arg1) + 1, (void *) ¤t_section, sizeof(zval
*), NULL);
@@ -213,7 +217,12 @@
}
fh.filename = browscap;
Z_TYPE(fh) = ZEND_HANDLE_FP;
+ current_section_name = NULL;
zend_parse_ini_file(&fh, 1, ZEND_INI_SCANNER_RAW,
(zend_ini_parser_cb_t) php_browscap_parser_cb, &browser_hash TSRMLS_CC);
+ if (current_section_name) {
+ free(current_section_name);
+ current_section_name = NULL;
+ }
}
return SUCCESS;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php