[jdom-interest] Bug in parseData(String rawData) in ProcessingInstruction.java
Albert Chang - 張拓
albert_chang at tnce.com.tw
Tue Apr 16 03:32:32 PDT 2002
Dear all:
<?pi href = ”http://www.jdom.org” media = “wap”?> <!-- Please note
the spaces inserted between the equal, ‘=’, signs.-->
won’t be parsed properly if you set data via the following code snippet.
ProcessingInstruction pi(“pi”, “href = \”http://www.jdom.org\” media =
\“wap\””);
// Please note the spaces inserted between the equal, ‘=’, signs.
After hacking into the source, org.jdom.ProcessingInstuction.java,
it failed on the privte function:
private Map paresData(String rawData), while parsing the media attribute.
The suspicious code is “pos += value.lenth() + 1;” in code sinppet
below:
….
if (currentChar == '=') {
name = inputData.substring(startName, pos).trim();
value =
extractQuotedString(inputData.substring(pos+1).trim());
// A null value means a parse error and we return empty!
if (value == null) {
return new HashMap();
}
pos += value.length() + 1; // skip over equals and
value
break;
}
……
⇨ Since there are extra spaces between ‘=’ sign for the first “href”
attribute, we shouldn’t just naiively use pos += value.length() + 1 to skip
over value. This will not move to the media attribute, but rather between
the value of href.
Regards,
Albert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://jdom.org/pipermail/jdom-interest/attachments/20020416/7634b1f7/attachment.htm
More information about the jdom-interest
mailing list