Skip to content

Commit bad55a7

Browse files
committed
Merge branch 'PHP-7.1'
* PHP-7.1: Fixed bug #74852 (property_exists returns true on unknown DateInterval property)
2 parents e24a801 + ccd0ff3 commit bad55a7

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed

NEWS

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ PHP NEWS
1010
. Fixed bug #74819 (wddx_deserialize() heap out-of-bound read via
1111
php_parse_date()). (Derick)
1212
. Fixed bug #74878 (Data race in ZTS builds). (Nikita)
13-
13+
14+
- Date:
15+
. Fixed bug #74852 (property_exists returns true on unknown DateInterval
16+
property). (jhdxr)
17+
1418
- EXIF:
1519
. Deprecated the read_exif_data() alias. (Kalle)
1620
. Fixed bug #74428 (exif_read_data(): "Illegal IFD size" warning occurs with

ext/date/php_date.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2016,7 +2016,7 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
20162016
zval *prop;
20172017
int retval = 0;
20182018

2019-
if (Z_TYPE_P(member) != IS_STRING) {
2019+
if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
20202020
ZVAL_COPY(&tmp_member, member);
20212021
convert_to_string(&tmp_member);
20222022
member = &tmp_member;
@@ -2032,10 +2032,10 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
20322032
}
20332033
return retval;
20342034
}
2035-
2036-
prop = date_interval_read_property(object, member, type, cache_slot, &rv);
2037-
2038-
if (prop != NULL) {
2035+
2036+
prop = date_interval_read_property(object, member, BP_VAR_IS, cache_slot, &rv);
2037+
2038+
if (prop != &EG(uninitialized_zval)) {
20392039
if (type == 2) {
20402040
retval = 1;
20412041
} else if (type == 1) {

ext/date/tests/bug74852.phpt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Bug #74852 property_exists returns true on unknown DateInterval property
3+
--FILE--
4+
<?php
5+
6+
$interval = new DateInterval('P2D');
7+
var_dump(property_exists($interval,'abcde'));
8+
var_dump(isset($interval->abcde));
9+
var_dump($interval->abcde);
10+
11+
?>
12+
--EXPECTF--
13+
bool(false)
14+
bool(false)
15+
16+
Notice: Undefined property: DateInterval::$abcde in %s on line %d
17+
NULL

0 commit comments

Comments
 (0)