RFR: 8212034: Potential memory leaks in jpegLoader.c in error case
Ambarish Rapte
arapte at openjdk.java.net
Thu Nov 28 10:19:07 UTC 2019
On Wed, 27 Nov 2019 21:13:40 GMT, Johan Vos <jvos at openjdk.org> wrote:
> On Wed, 27 Nov 2019 11:58:18 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:
>
>> Memory allocated in initDecompressor() and decompressIndirect() is not freed in error case.
>> In error case,
>> 1. Allocated memory should be freed.
>> 2. Appropriate de-initialization jpeg library calls should be added.
>>
>> Verified that,
>> 1. All unit and systems tests pass on three platforms, and
>> 2. Memory consumption with and without fix is similar by comparing memory before and after showing 10 jpeg images for 100 times.
>>
>> ----------------
>>
>> Commits:
>> - 7af932b7: 8212034: Memory leaks in jpegLoader.c in error case
>>
>> Changes: https://git.openjdk.java.net/jfx/pull/54/files
>> Webrev: https://webrevs.openjdk.java.net/jfx/54/webrev.00
>> Issue: https://bugs.openjdk.java.net/browse/JDK-8212034
>> Stats: 62 lines in 1 file changed: 36 ins; 14 del; 12 mod
>> Patch: https://git.openjdk.java.net/jfx/pull/54.diff
>> Fetch: git fetch https://git.openjdk.java.net/jfx pull/54/head:pull/54
>
> modules/javafx.graphics/src/main/native-iio/jpegloader.c line 1345:
>
>> 1344: free(cinfo->err);
>> 1345: free(cinfo);
>> 1346: ThrowByName(env, "java/io/IOException", buffer);
>
> jerr_mgr is also allocated via malloc, but not freed. Do you want to free that too?
Line: 1332=> jerr_mgr ptr is stored in cinfor->err
`cinfo->err = jpeg_std_error(&(jerr_mgr->pub));`
so free(cinfo->err) is same as free (jerr_mgr).
free(cinfo->err) is used here [instead of free(jerr_mgr)] to match the free call in imageio_dispose() method.
PR: https://git.openjdk.java.net/jfx/pull/54
More information about the openjfx-dev
mailing list