RFR [9]8134424: BlockDataInputStream.readUTFBody: examine sizing local StringBuffer with the given length

Aleksey Shipilev aleksey.shipilev at oracle.com
Wed Feb 10 14:25:37 UTC 2016


On 10.02.2016 17:07, Chris Hegarty wrote:
> Thanks Aleksey, your proposal is better. So the complete change is:
> 
> diff --git a/src/java.base/share/classes/java/io/ObjectInputStream.java
> b/src/java.base/share/classes/java/io/ObjectInputStream.java
> --- a/src/java.base/share/classes/java/io/ObjectInputStream.java
> +++ b/src/java.base/share/classes/java/io/ObjectInputStream.java
> @@ -3144,7 +3144,12 @@
>           * utflen bytes.
>           */
>          private String readUTFBody(long utflen) throws IOException {
> -            StringBuilder sbuf = new StringBuilder();
> +            if (utflen < 0 || utflen > Integer.MAX_VALUE)
> +                return "";
> +
> +            // a reasonable initial capacity based on the UTF length
> +            int initialCapacity = Math.min((int)utflen, 16384);
> +            StringBuilder sbuf = new StringBuilder(initialCapacity);
>              if (!blkmode) {
>                  end = pos = 0;
>              }


+1

-Aleksey





More information about the core-libs-dev mailing list