RFR: 8267314: Loading some animated GIFs fails with ArrayIndexOutOfBoundsException: Index 4096 out of bounds for length 4096

Jose Pereda jpereda at openjdk.java.net
Fri May 21 14:12:28 UTC 2021


This PR limits the `tableIndex` value, used by the LZWDecoder algorithm in `GIFImageLoader2`, to avoid a potential AIOOB exception that happens on some animated GIFs, to the maximum size of the tables used (4096). 

In some occasions loading an animated GIF like the one used in the included test, doesn't throw such exception, because we `allow partially loaded animated images` in `ImageStorage`, but only a few frames are loaded.

In theory, greater values of such index would operate over completely full tables, so there is no need to add new values in this case, and therefore, there is no risk in limiting the value to 4096.

This PR will prevent the exception and all the frames should load. The included test passes now (and fails loading only 10 frames out of 44 without the proposed fix).

-------------

Commit messages:
 - Limit tableIndex value to avoid AIOOB exception

Changes: https://git.openjdk.java.net/jfx/pull/513/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=513&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8267314
  Stats: 23 lines in 2 files changed: 11 ins; 1 del; 11 mod
  Patch: https://git.openjdk.java.net/jfx/pull/513.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/513/head:pull/513

PR: https://git.openjdk.java.net/jfx/pull/513


More information about the openjfx-dev mailing list