diff options
| author | Keith Seitz <keiths@redhat.com> | 2006-06-02 01:04:24 +0000 |
|---|---|---|
| committer | Keith Seitz <keiths@redhat.com> | 2006-06-02 01:04:24 +0000 |
| commit | d1ca8fe4cb3a682ed57a8d9e0da8ba3893f08e2a (patch) | |
| tree | b2bcbb64434b03b5bff4bdaf372a6383360524e6 /gnu/classpath/jdwp/processor | |
| parent | 02de0247da589918b7b7ee5230f61aa6e27ba671 (diff) | |
| download | classpath-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')
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) |
