Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix out of bounds write im->alpha[im->transparent] (#785)
Since #737 gdImageColorTransparent does not correctly handle the case that im->transparent = -1 (which is the initial value and used to indicate no transparent colour has been set). This leads to undefined behaviour via an out-of-bound write: im->alpha[im->transparent] = gdAlphaOpaque; (in practice I assume this merely overwrites an earlier struct member) This can be triggered via loading a gif through gdImageCreateFromGifPtr third_party/gd/source/gd.c:922:2: runtime error: index -1 out of bounds for type 'int [256]' #0 0x5629c034a839 in gdImageColorTransparent third_party/gd/source/gd.c:922:29 #1 0x5629c034ebf0 in gdImageCreateFromGifCtx third_party/gd/source/gd_gif_in.c:328:4 #2 0x5629c034f14f in gdImageCreateFromGifPtr third_party/gd/source/gd_gif_in.c:186:7 Fixes #784.
- Loading branch information