From: Anton Khirnov Date: Sat, 24 Aug 2013 19:30:46 +0000 (+0200) Subject: pictordec: break out of both decoding loops when y drops below 0 X-Git-Tag: v10_alpha1~830 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5f7aecde02a95451e514c809f2794c1deba80695;p=platform%2Fupstream%2Flibav.git pictordec: break out of both decoding loops when y drops below 0 Otherwise picmemset can get called with negative y, resulting in an invalid write. Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org --- diff --git a/libavcodec/pictordec.c b/libavcodec/pictordec.c index 2a6e391..20ddb20 100644 --- a/libavcodec/pictordec.c +++ b/libavcodec/pictordec.c @@ -226,7 +226,7 @@ static int decode_frame(AVCodecContext *avctx, if (bits_per_plane == 8) { picmemset_8bpp(s, frame, val, run, &x, &y); if (y < 0) - break; + goto finish; } else { picmemset(s, frame, val, run, &x, &y, &plane, bits_per_plane); } @@ -236,6 +236,7 @@ static int decode_frame(AVCodecContext *avctx, avpriv_request_sample(s, "Uncompressed image"); return avpkt->size; } +finish: *got_frame = 1; return avpkt->size;