Fixed bug #76777 and added test

Set undefined values to null rather than undefined.
This commit is contained in:
Ville Hukkamaki 2018-08-22 06:19:14 +02:00 committed by Christoph M. Becker
parent 4c542e6c13
commit cf2fc66b02
3 changed files with 49 additions and 2 deletions

4
NEWS
View File

@ -17,6 +17,10 @@ PHP NEWS
. Fixed bug #74484 (MessageFormatter::formatMessage memory corruption with
11+ named placeholders). (Anatol)
- libxml:
. Fixed bug #76777 ("public id" parameter of libxml_set_external_entity_loader
callback undefined). (Ville Hukkamäki)
- mbstring:
. Fixed bug #76704 (mb_detect_order return value varies based on argument
type). (cmb)

View File

@ -591,12 +591,12 @@ static xmlParserInputPtr _php_libxml_external_entity_loader(const char *URL,
if (ID != NULL) {
ZVAL_STRING(&params[0], ID);
} else {
ZVAL_UNDEF(&params[0]);
ZVAL_NULL(&params[0]);
}
if (URL != NULL) {
ZVAL_STRING(&params[1], URL);
} else {
ZVAL_UNDEF(&params[1]);
ZVAL_NULL(&params[1]);
}
ctxzv = &params[2];
array_init_size(ctxzv, 4);

View File

@ -0,0 +1,43 @@
--TEST--
Bug #76777 (first parameter of libxml_set_external_entity_loader callback undefined)
--SKIPIF--
<?php
if (!extension_loaded('libxml')) die('skip');
if (getenv("SKIP_ONLINE_TESTS")) die('skip online test');
?>
--FILE--
<?php
$xml=<<<EOF
<?xml version="1.0"?>
<test/>
EOF;
$xsd=<<<EOF
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="nonexistent.xsd"/>
<xs:element name="test"/>
</xs:schema>
EOF;
libxml_set_external_entity_loader(function($p,$s,$c) {
var_dump($p,$s,$c);
die();
});
$dom=new DOMDocument($xml);
$dom->schemaValidateSource($xsd);
?>
--EXPECTF--
NULL
string(15) "nonexistent.xsd"
array(4) {
["directory"]=>
NULL
["intSubName"]=>
NULL
["extSubURI"]=>
NULL
["extSubSystem"]=>
NULL
}