XMLReader option constants are broken with respect to open() and XML()
| Bug #42139 | XMLReader option constants are broken with respect to open() and XML() | ||||
|---|---|---|---|---|---|
| Submitted: | 2007-07-29 12:53 UTC | Modified: | 2007-09-20 19:27 UTC | ||
| From: | gwynne@php.net | Assigned: | rrichards (profile) | ||
| Status: | Closed | Package: | XML Reader | ||
| PHP Version: | 5CVS-2007-07-29 (CVS) | OS: | MacOS/Darwin 10.4.10/8.10.1 | ||
| Private report: | No | CVE-ID: | None | ||
[2007-07-29 12:53 UTC] gwynne@php.net
Description:
------------
The XMLReader constants for parser options (LOADDTD, SUBST_ENTITIES, etc.) don't work when passed as the third parameter to XMLReader::open() or XMLReader::XML(). Their values are incorrect for the xmlreader API; they're parser property names, not option bitmasks. The XML() method also ignores the options parameter completely.
This is partially a documentation problem, but also involves broken functionality in the xmlreader extension. Suggested fix is to either:
- remove the options parameters completely from both methods and their documentation
- fix the XML() method to read the options and document both functions as using the LIBXML_* constants (fix the docs to match the code), or
- modify both XML() and open() to interpret the options passed as properties (fix the code to match the docs)
Reproduce code:
---------------
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ELEMENT root ANY>
<!ENTITY x "y">
]>
<root>&x;</root>
XML;
$reader = new XMLReader;
$reader->XML( $xml, NULL, XMLReader::SUBST_ENTITIES );
// or: $reader->XML( $xml, NULL, LIBXML_NOENT );
while ( $reader->read() )
echo "{$reader->nodeType}, {$reader->name}, {$reader->value}\n";
$reader->close();
?>
Expected result:
----------------
10, root,
1, root,
3, #text, y
15, root,
Actual result:
--------------
10, root,
1, root,
5, x,
15, root,
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2007-07-30 12:44 UTC] rrichards@php.net
[2007-09-20 19:27 UTC] rrichards@php.net