--- a/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeModel.java Mon Aug 18 14:03:21 2014 +0100
+++ b/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeModel.java Tue Aug 19 10:32:16 2014 -0700
@@ -691,7 +691,13 @@
private void readObject(ObjectInputStream s)
throws IOException, ClassNotFoundException {
- s.defaultReadObject();
+ ObjectInputStream.GetField f = s.readFields();
+ EventListenerList newListenerList = (EventListenerList) f.get("listenerList", null);
+ if (newListenerList == null) {
+ throw new InvalidObjectException("Null listenerList");
+ }
+ listenerList = newListenerList;
+ asksAllowsChildren = f.get("asksAllowsChildren", false);
Vector<?> values = (Vector)s.readObject();
int indexCounter = 0;
@@ -699,7 +705,11 @@
if(indexCounter < maxCounter && values.elementAt(indexCounter).
equals("root")) {
- root = (TreeNode)values.elementAt(++indexCounter);
+ TreeNode newRoot = (TreeNode)values.elementAt(++indexCounter);
+ if (newRoot == null) {
+ throw new InvalidObjectException("Null root");
+ }
+ root = newRoot;
indexCounter++;
}
}