aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-11-15 10:15:24 +0100
committerReinhard Tartler <siretart@tauware.de>2014-01-05 17:00:40 -0500
commitc5c7e3e6f7cf17943c04bd078f260eaf789afbc9 (patch)
treecb40b5ec195b4ae721bad7a5015028246e74876b
parent5e7a5dd70b519121973ca243a802ee4eef4ed961 (diff)
downloadffmpeg-c5c7e3e6f7cf17943c04bd078f260eaf789afbc9.tar.gz
gifdec: check that the image dimensions are non-zero
Also add an error message an return a more suitable error code (INVALIDDATA, not EINVAL); Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC:libav-stable@libav.org (cherry picked from commit c453723ad7d14abc5e82677eebaa6025fa598f08) Signed-off-by: Reinhard Tartler <siretart@tauware.de>
-rw-r--r--libavcodec/gifdec.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/gifdec.c b/libavcodec/gifdec.c
index 2a962e5de0..8636780375 100644
--- a/libavcodec/gifdec.c
+++ b/libavcodec/gifdec.c
@@ -90,8 +90,11 @@ static int gif_read_image(GifState *s)
/* verify that all the image is inside the screen dimensions */
if (left + width > s->screen_width ||
- top + height > s->screen_height)
- return AVERROR(EINVAL);
+ top + height > s->screen_height ||
+ !width || !height) {
+ av_log(s->avctx, AV_LOG_ERROR, "Invalid image dimensions.\n");
+ return AVERROR_INVALIDDATA;
+ }
/* build the palette */
n = (1 << bits_per_pixel);