On 01/05/2015 03:52 PM, Daniel Fuchs wrote:
On 04/01/15 18:58, Peter Levart wrote:
Hi,

While investigating the following issue:

     https://bugs.openjdk.java.net/browse/JDK-8029891

I noticed there's a bug in deserialization code of java.util.Hashtable
(from day one probably):

     https://bugs.openjdk.java.net/browse/JDK-8068427

The fix is a trivial one-character replacement: '*' -> '/', but I also
corrected some untruthful comments in the neighbourhood (which might
have been true from day one, but are not any more):

http://cr.openjdk.java.net/~plevart/jdk9-dev/Hashtable.8068427/webrev.01/

Hi Peter,

I wonder whether there should be a guard against loadFactor being
zero/negative/NaN after line 1173, like in the constructor e.g. as
in lines

 188         if (loadFactor <= 0 || Float.isNaN(loadFactor))
189 throw new IllegalArgumentException("Illegal Load: "+loadFactor);

if only to avoid division by zero.

best regards,

-- daniel

Hi Daniel,

This is only possible with forged stream, right? We can extend this bug and make Hashtable more resilient to forged streams too.

Another check would be to limit the origlength to be no less than (int)(elements / loadFactor).

Can you spot any other check for an invariant that would bail out on forged streams?

Regards, Peter






Regards, Peter



Reply via email to