From f3ef2e4b537872178d185a0eec26f115281b94e2 Mon Sep 17 00:00:00 2001 From: serb Date: Wed, 15 Nov 2017 07:07:16 -0800 Subject: [PATCH] 8189989: Improve container portability Reviewed-by: prr, azvegint, rhalade, skoivu --- src/share/classes/java/awt/Container.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/share/classes/java/awt/Container.java b/src/share/classes/java/awt/Container.java index b9e4f9143..8525f3c0e 100644 --- a/src/share/classes/java/awt/Container.java +++ b/src/share/classes/java/awt/Container.java @@ -35,6 +35,7 @@ import java.awt.peer.LightweightPeer; import java.beans.PropertyChangeListener; import java.io.IOException; +import java.io.InvalidObjectException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.ObjectStreamField; @@ -3717,8 +3718,15 @@ public class Container extends Component { throws ClassNotFoundException, IOException { ObjectInputStream.GetField f = s.readFields(); - Component [] tmpComponent = (Component[])f.get("component", EMPTY_ARRAY); + // array of components may not be present in the stream or may be null + Component [] tmpComponent = (Component[])f.get("component", null); + if (tmpComponent == null) { + tmpComponent = EMPTY_ARRAY; + } int ncomponents = (Integer) f.get("ncomponents", 0); + if (ncomponents < 0 || ncomponents > tmpComponent.length) { + throw new InvalidObjectException("Incorrect number of components"); + } component = new java.util.ArrayList(ncomponents); for (int i = 0; i < ncomponents; ++i) { component.add(tmpComponent[i]); -- GitLab