changeset 1797:1ded804bbc07

8189989: Improve container portability Reviewed-by: prr, azvegint, rhalade, skoivu
author serb
date Wed, 15 Nov 2017 07:07:16 -0800
parents 5bfbe17c45bc
children 80a6c44694f2
files src/share/classes/java/awt/Container.java
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/java/awt/Container.java	Wed Jan 03 19:24:14 2018 -0800
+++ b/src/share/classes/java/awt/Container.java	Wed Nov 15 07:07:16 2017 -0800
@@ -35,6 +35,7 @@
 import java.beans.PropertyChangeListener;
 
 import java.io.IOException;
+import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamField;
@@ -3526,8 +3527,15 @@
         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<Component>(ncomponents);
         for (int i = 0; i < ncomponents; ++i) {
             component.add(tmpComponent[i]);