[Libreoffice-commits] core.git: 4 commits - jurt/com

Stephan Bergmann sbergman at redhat.com
Wed Feb 24 10:34:17 UTC 2016


 jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java |   32 +++++++++++++----
 jurt/com/sun/star/lib/uno/protocols/urp/urp.java       |   10 ++++-
 2 files changed, 33 insertions(+), 9 deletions(-)

New commits:
commit 1629228b7b7c77dcbdedbd5acb403e6ea0492247
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Feb 24 11:20:39 2016 +0100

    cid#1326391: Dereference null return value
    
    ...replacing implicit NullPointerException with explicit IOException
    
    Change-Id: I673c836c64e141a7a3e4b40fca0922feee26bd03

diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/urp.java b/jurt/com/sun/star/lib/uno/protocols/urp/urp.java
index 5e7b328..3033481 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/urp.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/urp.java
@@ -398,14 +398,16 @@ public final class urp implements IProtocol {
         return readRequest(funId, sync);
     }
 
-    private UrpMessage readShortRequest(int header) {
+    private UrpMessage readShortRequest(int header) throws IOException {
         int funId = (header & HEADER_FUNCTIONID14) != 0
             ? ((header & HEADER_FUNCTIONID) << 8) | unmarshal.read8Bit()
             : header & HEADER_FUNCTIONID;
         return readRequest(funId, false);
     }
 
-    private UrpMessage readRequest(int functionId, boolean forcedSynchronous) {
+    private UrpMessage readRequest(int functionId, boolean forcedSynchronous)
+        throws IOException
+    {
         boolean internal = PROPERTIES_OID.equals(inL1Oid);
             // inL1Oid may be null in XInstanceProvider.getInstance("")
         XCurrentContext cc =
@@ -415,6 +417,10 @@ public final class urp implements IProtocol {
                 new Type(XCurrentContext.class))
             : null;
         IMethodDescription desc = inL1Type.getMethodDescription(functionId);
+        if (desc == null) {
+            throw new IOException(
+                "read URP request with unsupported function ID " + functionId);
+        }
         ITypeDescription[] inSig = desc.getInSignature();
         ITypeDescription[] outSig = desc.getOutSignature();
         Object[] args = new Object[inSig.length];
commit d79ce8ba8f9e2411ab70b5c9d2ea0bb6b4f4e84e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Feb 24 10:46:36 2016 +0100

    cid#1326441,1326442,1326392: Dereference null return value
    
    ...replacing implicit NullPointerException/IndexOutOfBoundsException with
    explicit RuntimeException
    
    Change-Id: I519b0fcd2b2d2657ae82ef7eb28f88a0e13fa970

diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
index a2681b0..c8d14e9 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
@@ -124,8 +124,18 @@ final class Unmarshal {
             return TypeDescription.getTypeDescription(typeClass);
         } else {
             int index = read16Bit();
-            TypeDescription type = null;
-            if ((b & 0x80) != 0) {
+            TypeDescription type;
+            if ((b & 0x80) == 0) {
+                if (index >= typeCache.length) {
+                    throw new RuntimeException(
+                        "Reading TYPE with bad cache index " + index);
+                }
+                type = typeCache[index];
+                if (type == null) {
+                    throw new RuntimeException(
+                        "Reading TYPE with empty cache index " + index);
+                }
+            } else {
                 try {
                     type = TypeDescription.getTypeDescription(
                         readStringValue());
@@ -134,11 +144,11 @@ final class Unmarshal {
                 } catch (ClassNotFoundException e) {
                     throw new RuntimeException(e);
                 }
-            }
-            if (index != 0xFFFF) {
-                if ((b & 0x80) == 0) {
-                    type = typeCache[index];
-                } else {
+                if (index != 0xFFFF) {
+                    if (index >= typeCache.length) {
+                        throw new RuntimeException(
+                            "Reading TYPE with bad cache index " + index);
+                    }
                     typeCache[index] = type;
                 }
             }
commit 3e945cbd9b23a98d22065f1593295a7afa410c9e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Feb 23 17:51:13 2016 +0100

    Be specific about illegal input
    
    Change-Id: Ib840f5516e503ce92078150933217149fd322bde

diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
index 93a56b4..a2681b0 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
@@ -117,6 +117,10 @@ final class Unmarshal {
                 "Reading TYPE with bad type class " + (b & 0x7F));
         }
         if (TypeDescription.isTypeClassSimple(typeClass)) {
+            if ((b & 0x80) != 0) {
+                throw new RuntimeException(
+                    "Reading TYPE with bad type class/cache flag " + b);
+            }
             return TypeDescription.getTypeDescription(typeClass);
         } else {
             int index = read16Bit();
commit 74a18f64eebc8f6f66d64e439e152c6cdf9d76db
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Feb 23 17:28:43 2016 +0100

    cid#1326440 Dereference null return value
    
    ...replacing implicit NullPointerException with explicit RuntimeException
    
    Change-Id: I14dfe81a6a05d33cb311a6274c085ea0dcf95692

diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
index 48d7630..93a56b4 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
@@ -112,6 +112,10 @@ final class Unmarshal {
     public TypeDescription readType() {
         int b = read8Bit();
         TypeClass typeClass = TypeClass.fromInt(b & 0x7F);
+        if (typeClass == null) {
+            throw new RuntimeException(
+                "Reading TYPE with bad type class " + (b & 0x7F));
+        }
         if (TypeDescription.isTypeClassSimple(typeClass)) {
             return TypeDescription.getTypeDescription(typeClass);
         } else {


More information about the Libreoffice-commits mailing list