summaryrefslogtreecommitdiff
path: root/gnu/classpath/jdwp/processor
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2006-06-02 01:04:24 +0000
committerKeith Seitz <keiths@redhat.com>2006-06-02 01:04:24 +0000
commitd1ca8fe4cb3a682ed57a8d9e0da8ba3893f08e2a (patch)
treeb2bcbb64434b03b5bff4bdaf372a6383360524e6 /gnu/classpath/jdwp/processor
parent02de0247da589918b7b7ee5230f61aa6e27ba671 (diff)
downloadclasspath-d1ca8fe4cb3a682ed57a8d9e0da8ba3893f08e2a.tar.gz
From Martin Platter <motse@complang.tuwien.ac.at>:
* gnu/classpath/jdwp/processor/EventRequestCommandSet.java (executeSet): Fix buffer underflow reading reference ID. * gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java (executeParent): Fix NPE if ThreadGroup is top-level ThreadGroup. * gnu/classpath/jdwp/processor/ClassTypeCommandSet.java (executeSuperclass): Handle case of Object with ID zero.
Diffstat (limited to 'gnu/classpath/jdwp/processor')
-rw-r--r--gnu/classpath/jdwp/processor/ClassTypeCommandSet.java8
-rw-r--r--gnu/classpath/jdwp/processor/EventRequestCommandSet.java2
-rw-r--r--gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java8
3 files changed, 13 insertions, 5 deletions
diff --git a/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java b/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
index f60da7b70..a3a7ca05e 100644
--- a/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
+++ b/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
@@ -106,8 +106,12 @@ public class ClassTypeCommandSet
Class clazz = refId.getType();
Class superClazz = clazz.getSuperclass();
- ReferenceTypeId clazzId = idMan.getReferenceTypeId(superClazz);
- clazzId.write(os);
+ if (superClazz == null) {
+ os.writeLong(0L);
+ } else {
+ ReferenceTypeId clazzId = idMan.getReferenceTypeId(superClazz);
+ clazzId.write(os);
+ }
}
private void executeSetValues(ByteBuffer bb, DataOutputStream os)
diff --git a/gnu/classpath/jdwp/processor/EventRequestCommandSet.java b/gnu/classpath/jdwp/processor/EventRequestCommandSet.java
index e4b1b602e..59cfb94d3 100644
--- a/gnu/classpath/jdwp/processor/EventRequestCommandSet.java
+++ b/gnu/classpath/jdwp/processor/EventRequestCommandSet.java
@@ -147,7 +147,7 @@ public class EventRequestCommandSet
if (id == 0)
refId = null;
else
- refId = idMan.readReferenceTypeId(bb);
+ refId = idMan.getReferenceType(id);
boolean caught = (bb.get() == 0) ? false : true;
boolean unCaught = (bb.get() == 0) ? false : true;
filter = new ExceptionOnlyFilter(refId, caught, unCaught);
diff --git a/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java b/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java
index ba36251f6..103199a2b 100644
--- a/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java
+++ b/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java
@@ -103,8 +103,12 @@ public class ThreadGroupReferenceCommandSet
ObjectId oid = idMan.readObjectId(bb);
ThreadGroup group = (ThreadGroup) oid.getObject();
ThreadGroup parent = group.getParent();
- ObjectId parentId = idMan.getObjectId(parent);
- parentId.write(os);
+ if (parent == null) {
+ os.writeLong(0L);
+ } else {
+ ObjectId parentId = idMan.getObjectId(parent);
+ parentId.write(os);
+ }
}
private void executeChildren(ByteBuffer bb, DataOutputStream os)