mrglavas 2003/11/07 13:00:28
Modified: java/src/org/apache/xerces/impl XML11EntityScanner.java
XMLEntityScanner.java
Log:
Fixing a couple of bugs:
1) We were previously accepting strings starting with ':' as
valid QNames. Now checking that the first character
actually is a NCNameChar.
2) In XML11EntityScanner scanQName would accept
any NCNameChar where the NCNameStartChar was expected
in the local part. So illegal names like, 'bad:1' were slipping
through undetected.
Revision Changes Path
1.8 +10 -2
xml-xerces/java/src/org/apache/xerces/impl/XML11EntityScanner.java
Index: XML11EntityScanner.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XML11EntityScanner.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XML11EntityScanner.java 6 Nov 2003 18:57:47 -0000 1.7
+++ XML11EntityScanner.java 7 Nov 2003 21:00:27 -0000 1.8
@@ -59,6 +59,7 @@
import java.io.IOException;
+import org.apache.xerces.impl.msg.XMLMessageFormatter;
import org.apache.xerces.util.XMLChar;
import org.apache.xerces.util.XML11Char;
import org.apache.xerces.util.XMLStringBuffer;
@@ -379,7 +380,7 @@
// scan qualified name
int offset = fCurrentEntity.position;
- if (XML11Char.isXML11NameStart(fCurrentEntity.ch[offset])) {
+ if (XML11Char.isXML11NCNameStart(fCurrentEntity.ch[offset])) {
if (++fCurrentEntity.position == fCurrentEntity.count) {
fCurrentEntity.ch[0] = fCurrentEntity.ch[offset];
offset = 0;
@@ -434,6 +435,13 @@
prefix = fSymbolTable.addSymbol(fCurrentEntity.ch,
offset, prefixLength);
int len = length - prefixLength - 1;
+ int startLocal = index +1;
+ if
(!XML11Char.isXML11NCNameStart(fCurrentEntity.ch[startLocal])){
+ fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+ "IllegalQName",
+ null,
+
XMLErrorReporter.SEVERITY_FATAL_ERROR);
+ }
localpart = fSymbolTable.addSymbol(fCurrentEntity.ch,
index + 1, len);
1.18 +3 -3 xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java
Index: XMLEntityScanner.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- XMLEntityScanner.java 6 Nov 2003 18:57:47 -0000 1.17
+++ XMLEntityScanner.java 7 Nov 2003 21:00:27 -0000 1.18
@@ -561,7 +561,7 @@
// scan qualified name
int offset = fCurrentEntity.position;
- if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) {
+ if (XMLChar.isNCNameStart(fCurrentEntity.ch[offset])) {
if (++fCurrentEntity.position == fCurrentEntity.count) {
fCurrentEntity.ch[0] = fCurrentEntity.ch[offset];
offset = 0;
@@ -623,7 +623,7 @@
offset, prefixLength);
int len = length - prefixLength - 1;
int startLocal = index +1;
- if (!XMLChar.isNameStart(fCurrentEntity.ch[startLocal])){
+ if (!XMLChar.isNCNameStart(fCurrentEntity.ch[startLocal])){
fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
"IllegalQName",
null,
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]