8190289: More refactoring for client deserialization cases
Reviewed-by: prr, azvegint, rhalade, skoivu
--- a/src/java.desktop/share/classes/java/awt/geom/Path2D.java Mon Nov 06 22:09:04 2017 +0800
+++ b/src/java.desktop/share/classes/java/awt/geom/Path2D.java Mon Nov 06 10:24:42 2017 -0800
@@ -25,13 +25,14 @@
package java.awt.geom;
+import java.awt.Rectangle;
import java.awt.Shape;
-import java.awt.Rectangle;
-import sun.awt.geom.Curve;
import java.io.Serializable;
import java.io.StreamCorruptedException;
import java.util.Arrays;
+import sun.awt.geom.Curve;
+
/**
* The {@code Path2D} class provides a simple, yet flexible
* shape which represents an arbitrary geometric path.
@@ -2625,9 +2626,12 @@
throw new java.io.InvalidObjectException(iae.getMessage());
}
- pointTypes = new byte[(nT < 0) ? INIT_SIZE : nT];
- if (nC < 0) {
- nC = INIT_SIZE * 2;
+ // Accept the size from the stream only if it is less than INIT_SIZE
+ // otherwise the size will be based on the real data in the stream
+ pointTypes = new byte[(nT < 0 || nT > INIT_SIZE) ? INIT_SIZE : nT];
+ final int initX2 = INIT_SIZE * 2;
+ if (nC < 0 || nC > initX2) {
+ nC = initX2;
}
if (storedbl) {
((Path2D.Double) this).doubleCoords = new double[nC];
--- a/src/java.desktop/share/classes/javax/swing/text/html/CSS.java Mon Nov 06 22:09:04 2017 +0800
+++ b/src/java.desktop/share/classes/javax/swing/text/html/CSS.java Mon Nov 06 10:24:42 2017 -0800
@@ -26,21 +26,27 @@
import java.awt.Color;
import java.awt.Font;
-import java.awt.GraphicsEnvironment;
-import java.awt.Toolkit;
import java.awt.HeadlessException;
import java.awt.Image;
-import java.io.*;
-import java.lang.reflect.Method;
+import java.awt.Toolkit;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.net.MalformedURLException;
import java.net.URL;
-import java.net.MalformedURLException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
-import java.util.Locale;
+
import javax.swing.ImageIcon;
import javax.swing.SizeRequirements;
-import javax.swing.text.*;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.Element;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyleContext;
+import javax.swing.text.View;
/**
* Defines a set of
@@ -3568,7 +3574,7 @@
// Reconstruct the hashtable.
int numValues = s.readInt();
- valueConvertor = new Hashtable<>(Math.max(1, numValues));
+ valueConvertor = new Hashtable<>();
while (numValues-- > 0) {
Object key = s.readObject();
Object value = s.readObject();