Edit report at https://bugs.php.net/bug.php?id=36795&edit=1
ID: 36795
Comment by: abxccd at msn dot com
Reported by: john at carney dot id dot au
Summary: Inappropriate "unterminated entity reference" in
DOMElement->setAttribute
Status: Bogus
Type: Bug
Package: DOM XML related
Operating System: *
PHP Version: 5.*, 6
Block user comment: N
Private report: N
New Comment:
I am still seeing this bug in PHP 5.3.8
Previous Comments:
------------------------------------------------------------------------
[2011-02-23 03:30:34] jan-bugreport at gmx dot de
With simpleXML, addChild($name, $value) works really weird (tested on 5.3.1 on
win): in the value, the characters < and > are correctly esacped to < and
> but ampersands cause the "unterminated entity reference" message. I would
understand if it escaped nothing, or if it escaped everything, but this seems
weird.
Also, no matter what the final decision about this bug will be, this should be
documented really well in the SimpleXML docs. It is confusing and I could
imagine it could cause security issues in some applications.
------------------------------------------------------------------------
[2010-09-22 01:02:27] steven at navolutions dot com
I also had this issue, one thing that might not have been included in the
original reproducing of the code is that the DOMElement may have been extended.
I know mine is extended so Reproduce the code by extending the DOMElement
class. I also extended the DOMDocuement class so try that too. So no the status
is not Bogus, just to tested thoroughly.
------------------------------------------------------------------------
[2010-04-09 14:01:23] [email protected]
Behavior as defined by DOM specs. No warnings are issued are from either of the
2
examples in the reproduced code.
addChild() method described in later reports works are defined by specs. Use
the
simplexml property accessors for auto escaping.
------------------------------------------------------------------------
[2010-02-04 18:23:10] jalday at delivery dot com
Still seeing this issue...
$order_x->addChild('location', '1st & 52nd');
gives "Warning: SimpleXMLElement::addChild(): unterminated entity reference"
If I run it as
$order_x->addChild('location', htmlspecialchars('1st & 52nd'));
I have no problems.
------------------------------------------------------------------------
[2009-10-22 16:28:09] gary dot malcolm at gmail dot com
I'm running PHP 5.2.9 on Linux and this bug is still alive and well making
SimpleXml absolutely inappropriate for XML communications between systems.
<code>
$safe_value = preg_replace('/&(?!\w+;)/', '&', $value);
return $sxml->addChild($name, $safe_value);
</code>
Is just plain wrong. I'm communicating user input directly to a bank as I can't
know how the third party will parse their xml.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=36795
--
Edit this bug report at https://bugs.php.net/bug.php?id=36795&edit=1