Code review request 6858865: Fix for 6728376 causes regression if the size of "data" is 0 and malloc returns Null for 0-length
Xueming Shen
xueming.shen at oracle.com
Fri Nov 19 16:08:13 UTC 2010
On 11/19/2010 01:31, Alan Bateman wrote:
> Xueming Shen wrote:
>> Alan,
>>
>> It might not be a real "regression" if only consider the supported
>> platforms
>> (and yes, the malloc manpageI can found does clearly indicate NULL is
>> for error).
>> However I prefer to add some checks to make sure it behaves the same
>> (compared to before the #6728376 change went it), even on the "weird OS"
>> that Mario has. Anyway, a 0-length really malloc should not trigger a
>> OOME.
>>
>> http://cr.openjdk.java.net/~sherman/6858865/webrev
>>
>> The webrev for #6728376 is at
>> http://cr.openjdk.java.net/~sherman/6728376/webrev
>>
>> Thanks,
>> -Sherman
>>
>>
> I think this one has come up before [1]. Looking at it now, I wonder
> if it would be simpe for inflate to just return 0 if the input buffer
> or the max number of uncompressed bytes is 0. That is, just don't
> attempt the mallocs for these cases.
>
> -Alan
>
>
>
> [1]
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-July/002028.html
We can probably do that for Inflater.c (and probably better do that at
java level before
we even "come down" here), but thing gets a little complicated for
Deflater. One of the
paths of the deflateBytes is to deal with parameter(s) change, so if
malloc does not
fail for 0-length request (true on all supported platforms), the
deflateBytes goes down
to zlib's deflateParams() and if there is nothing left to flush, "this"
invocation can successfully
re-set the param(s) and return 0. The reason why I decided to go with
the "safe and simple"
solution last night, the proposed webrev at least should behave the
exactly the same as it
was before.
-Sherman
More information about the core-libs-dev
mailing list