]> granicus.if.org Git - php/commitdiff
Fix #77360: class_uses causes segfault
authorLauri Kenttä <lauri.kentta@gmail.com>
Thu, 27 Dec 2018 14:16:29 +0000 (16:16 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 27 Dec 2018 14:34:02 +0000 (15:34 +0100)
NEWS
ext/spl/php_spl.c
ext/spl/tests/bug77360.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index df3dbc2b541e122114f3a59afe07a1b66a48b960..a4b9d1f3a5d95147eabc243c4db3a79a706edda2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,7 @@ PHP                                                                        NEWS
   . Fixed bug #77298 (segfault occurs when add property to unserialized empty
     ArrayObject). (jhdxr)
   . Fixed bug #77359 (spl_autoload causes segfault). (Lauri Kenttä)
+  . Fixed bug #77360 (class_uses causes segfault). (Lauri Kenttä)
 
 03 Jan 2019, PHP 7.3.1
 
index b5379baae0bc61a6fd85913344d4ec0cbe6a32f7..4da4201f887a7201766446b0442b602fd00c88a7 100644 (file)
@@ -69,7 +69,7 @@ static zend_class_entry * spl_find_ce_by_name(zend_string *name, zend_bool autol
                zend_string *lc_name = zend_string_tolower(name);
 
                ce = zend_hash_find_ptr(EG(class_table), lc_name);
-               zend_string_free(lc_name);
+               zend_string_release(lc_name);
        } else {
                ce = zend_lookup_class(name);
        }
diff --git a/ext/spl/tests/bug77360.phpt b/ext/spl/tests/bug77360.phpt
new file mode 100644 (file)
index 0000000..2afa535
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+Bug #77360: class_uses causes segfault
+--FILE--
+<?php
+
+class foobar {}
+$str = "foo";
+$str .= "bar";
+var_dump(class_uses($str, false));
+var_dump(class_uses($str, false));
+var_dump($str);
+
+?>
+--EXPECT--
+array(0) {
+}
+array(0) {
+}
+string(6) "foobar"