SOURCES: kdelibs-kjs.patch (NEW) - sec fix

arekm arekm at pld-linux.org
Sun Jan 15 14:15:56 CET 2006


Author: arekm                        Date: Sun Jan 15 13:15:56 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- sec fix

---- Files affected:
SOURCES:
   kdelibs-kjs.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/kdelibs-kjs.patch
diff -u /dev/null SOURCES/kdelibs-kjs.patch:1.1
--- /dev/null	Sun Jan 15 14:15:56 2006
+++ SOURCES/kdelibs-kjs.patch	Sun Jan 15 14:15:51 2006
@@ -0,0 +1,49 @@
+Index: kjs/function.cpp
+===================================================================
+--- kjs/function.cpp	(revision 495921)
++++ kjs/function.cpp	(working copy)
+@@ -77,7 +77,8 @@ UString encodeURI(ExecState *exec, UStri
+       }
+       else if (C.uc >= 0xD800 && C.uc <= 0xDBFF) {
+ 
+-	if (k == string.size()) {
++        // we need two chars
++	if (k + 1 >= string.size()) {
+ 	  Object err = Error::create(exec,URIError);
+ 	  exec->setException(err);
+ 	  free(encbuf);
+@@ -197,6 +198,10 @@ UString decodeURI(ExecState *exec, UStri
+     }
+ 
+     k += 2;
++
++    if (decbufLen+2 >= decbufAlloc)
++        decbuf = (UChar*)realloc(decbuf,(decbufAlloc *= 2)*sizeof(UChar));
++
+     if ((B & 0x80) == 0) {
+       // Single-byte character
+       C = B;
+@@ -257,6 +262,12 @@ UString decodeURI(ExecState *exec, UStri
+ 	assert(n == 4);
+ 	unsigned long uuuuu = ((octets[0] & 0x07) << 2) | ((octets[1] >> 4) & 0x03);
+ 	unsigned long vvvv = uuuuu-1;
++	if (vvvv > 0x0F) {
++          Object err = Error::create(exec,URIError);
++	  exec->setException(err);
++	  free(decbuf);
++	  return UString();
++	}        
+ 	unsigned long wwww = octets[1] & 0x0F;
+ 	unsigned long xx = (octets[2] >> 4) & 0x03;
+ 	unsigned long yyyy = octets[2] & 0x0F;
+@@ -270,9 +281,7 @@ UString decodeURI(ExecState *exec, UStri
+     }
+ 
+     if (reservedSet.find(C) < 0) {
+-      if (decbufLen+1 >= decbufAlloc)
+-	decbuf = (UChar*)realloc(decbuf,(decbufAlloc *= 2)*sizeof(UChar));
+-      decbuf[decbufLen++] = C;
++        decbuf[decbufLen++] = C;
+     }
+     else {
+       while (decbufLen+k-start >= decbufAlloc)
================================================================


More information about the pld-cvs-commit mailing list