Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanne Grunau <janne-libav@jannau.net>2011-12-10 15:55:08 +0400
committerJanne Grunau <janne-libav@jannau.net>2011-12-10 18:29:54 +0400
commit2b53e696c864c4ade3c38707f8595e17a998bedc (patch)
tree4657e2f93ff845dba7f00d8bc06fcdb00e6866af /libavcodec/ptx.c
parent97334f106cfbf9787808b922bfb3c2973712f47d (diff)
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.
Diffstat (limited to 'libavcodec/ptx.c')
-rw-r--r--libavcodec/ptx.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/ptx.c b/libavcodec/ptx.c
index eee0d58994..75b42d5073 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;
}