From 2b53e696c864c4ade3c38707f8595e17a998bedc Mon Sep 17 00:00:00 2001
From: Janne Grunau <janne-libav@jannau.net>
Date: Sat, 10 Dec 2011 12:55:08 +0100
Subject: [PATCH] ptx: emit a warning on insufficient picture data

Return the whole packet as consumed in this case and not the size the
packet should have had. Move the insufficient data check into the for
condition to fix a ISO C90 error on bigendian.
---
 libavcodec/ptx.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavcodec/ptx.c b/libavcodec/ptx.c
index eee0d589941..75b42d50732 100644
--- a/libavcodec/ptx.c
+++ b/libavcodec/ptx.c
@@ -84,9 +84,7 @@ static int ptx_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
     ptr    = p->data[0];
     stride = p->linesize[0];
 
-    for (y=0; y<h; y++) {
-        if (buf_end - buf < w * bytes_per_pixel)
-            break;
+    for (y = 0; y < h && buf_end - buf < w * bytes_per_pixel; y++) {
 #if HAVE_BIGENDIAN
         unsigned int x;
         for (x=0; x<w*bytes_per_pixel; x+=bytes_per_pixel)
@@ -101,6 +99,11 @@ static int ptx_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
     *picture = s->picture;
     *data_size = sizeof(AVPicture);
 
+    if (y < h) {
+        av_log(avctx, AV_LOG_WARNING, "incomplete packet\n");
+        return avpkt->size;
+    }
+
     return offset + w*h*bytes_per_pixel;
 }
 
-- 
GitLab