Skip to content

Commit fd41b99

Browse files
committed
Merge branch 'PHP-7.3'
* PHP-7.3: Fixed bug #77494 (Disabling class causes segfault on member access)
2 parents 1d984cc + aa9a8db commit fd41b99

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

Zend/tests/bug77494.phpt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
Bug #77494 (Disabling class causes segfault on member access)
3+
--SKIPIF--
4+
<?php if (!extension_loaded("curl")) exit("skip curl extension not loaded"); ?>
5+
--INI--
6+
disable_classes=CURLFile
7+
--FILE--
8+
<?php
9+
$a = new CURLFile();
10+
var_dump($a->name);
11+
?>
12+
--EXPECTF--
13+
Warning: CURLFile() has been disabled for security reasons in %sbug77494.php on line 2
14+
15+
Notice: Undefined property: CURLFile::$name in %sbug77494.php on line 3
16+
NULL

Zend/zend_API.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2773,6 +2773,17 @@ static zend_object *display_disabled_class(zend_class_entry *class_type) /* {{{
27732773
zend_object *intern;
27742774

27752775
intern = zend_objects_new(class_type);
2776+
2777+
/* Initialize default properties */
2778+
if (EXPECTED(class_type->default_properties_count != 0)) {
2779+
zval *p = intern->properties_table;
2780+
zval *end = p + class_type->default_properties_count;
2781+
do {
2782+
ZVAL_UNDEF(p);
2783+
p++;
2784+
} while (p != end);
2785+
}
2786+
27762787
zend_error(E_WARNING, "%s() has been disabled for security reasons", ZSTR_VAL(class_type->name));
27772788
return intern;
27782789
}

0 commit comments

Comments
 (0)