2018-01-14 14:35:59 (UTC-02:00)
Marcel Rodrigues <marcelgmr@gmail.com>
Improve robustness by skipping invalid image data.
diff --git a/gifdec.c b/gifdec.c index 7585a82..9cd5ff2 100644 --- a/gifdec.c +++ b/gifdec.c @@ -298,9 +298,14 @@ read_image_data(gd_GIF *gif) int ret; Table *table; Entry entry; + off_t start, end; read(gif->fd, &byte, 1); key_size = (int) byte; + start = lseek(gif->fd, 0, SEEK_CUR); + discard_sub_blocks(gif); + end = lseek(gif->fd, 0, SEEK_CUR); + lseek(gif->fd, start, SEEK_SET); clear = 1 << key_size; stop = clear + 1; table = new_table(key_size); @@ -346,6 +351,7 @@ read_image_data(gd_GIF *gif) } free(table); read(gif->fd, &sub_len, 1); /* Must be zero! */ + lseek(gif->fd, end, SEEK_SET); return 0; }