summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2010-05-17 07:50:33 +0000
committerDmitry Stogov <dmitry@php.net>2010-05-17 07:50:33 +0000
commit059e2be1534b695b07e13b509d990141a3c1b227 (patch)
treebf11733332e331b5696369cd41849644c6501e5b
parent9db78b574bf6409f154d5381a3d876fc9f220c3d (diff)
downloadphp-git-059e2be1534b695b07e13b509d990141a3c1b227.tar.gz
Fixed a possible crash because of recursive GC invocation
-rw-r--r--NEWS1
-rw-r--r--ext/simplexml/simplexml.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 0f0bf189b0..9de7107d61 100644
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,7 @@ PHP NEWS
- Fixed very rare memory leak in mysqlnd, when binding thousands of columns.
(Andrey)
+- Fixed a possible crash because of recursive GC invocation. (Dmitry)
- Fixed a possible resource destruction issues in shm_put_var()
Reported by Stefan Esser (Dmitry)
- Fixed a possible information leak because of interruption of XOR operator.
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index 5087b4f9dc..12cedfce75 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -1083,6 +1083,9 @@ static HashTable * sxe_get_prop_hash(zval *object, int is_debug TSRMLS_DC) /* {{
zend_hash_clean(sxe->properties);
rv = sxe->properties;
} else {
+ if (GC_G(gc_active)) {
+ return NULL;
+ }
ALLOC_HASHTABLE(rv);
zend_hash_init(rv, 0, NULL, ZVAL_PTR_DTOR, 0);
sxe->properties = rv;