[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/khtml/xml
From:       Harri Porten <porten () kde ! org>
Date:       2008-01-20 0:36:32
Message-ID: 1200789392.833025.10390.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 763645 by porten:

Merged revision 763644:
We missed some namespace checking in createElementNS() and
createAttributeNS(). Function size is unhealthy now.

 M  +12 -2     dom_elementimpl.h  


--- trunk/KDE/kdelibs/khtml/xml/dom_elementimpl.h #763644:763645
@@ -380,12 +380,22 @@
         }
     }
 
+    bool hasXMLPrefix = colonpos == 3 && (*qname)[0] == QLatin1Char('x') &&
+      (*qname)[1] == QLatin1Char('m') && (*qname)[2] == QLatin1Char('l');
+    bool hasXMLNSPrefix = colonpos == 5 && (*qname)[0] == QLatin1Char('x') &&
+      (*qname)[1] == QLatin1Char('m') && (*qname)[2] == QLatin1Char('l') &&
+      (*qname)[3] == QLatin1Char('n') && (*qname)[4] == QLatin1Char('s');
+
     if ((!qualifiedName.isNull() && \
Element::khtmlMalformedQualifiedName(qualifiedName)) ||  (colonpos >= 0 && \
namespaceURI.isNull()) ||  colonpos == 0 || // prefix has to consist of at least a \
letter  (qualifiedName.isNull() && !namespaceURI.isNull()) ||
-        (colonpos == 3 && qualifiedName[0] == QLatin1Char('x') && qualifiedName[1] \
                == QLatin1Char('m') && qualifiedName[2] == QLatin1Char('l') &&
-         namespaceURI != "http://www.w3.org/XML/1998/namespace")) {
+        (hasXMLPrefix &&
+         namespaceURI != "http://www.w3.org/XML/1998/namespace") ||
+        (hasXMLNSPrefix &&
+         namespaceURI != "http://www.w3.org/2000/xmlns/") ||
+        (namespaceURI == "http://www.w3.org/2000/xmlns/" &&
+         !hasXMLNSPrefix && qualifiedName != "xmlns")) {
         if (pExceptioncode)
             *pExceptioncode = DOMException::NAMESPACE_ERR;
         return false;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic