aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2016-11-09 23:23:16 +0100
committerAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2016-11-27 00:38:57 +0100
commit5d2f1ffef1f26e4d66c8e63ab1101da179af11e6 (patch)
tree5ad1f99d7da60c37a3f5d52f2a54c72902174352
parent80b85300ae0b8c6c1bb813a4390d94e3ea87b1da (diff)
downloadffmpeg-5d2f1ffef1f26e4d66c8e63ab1101da179af11e6.tar.gz
pgssubdec: only set w/h/linesize when allocating data
Rects with positive w/h/linesize but no data are invalid. Reviewed-by: Petri Hintukainen <phintuka@gmail.com> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> (cherry picked from commit 995512328ed84bb737bc364e4ef6fba1994f062a) Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
-rw-r--r--libavcodec/pgssubdec.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c
index 133d08bfa7..5174d89190 100644
--- a/libavcodec/pgssubdec.c
+++ b/libavcodec/pgssubdec.c
@@ -558,12 +558,13 @@ static int display_end_segment(AVCodecContext *avctx, void *data,
sub->rects[i]->x = ctx->presentation.objects[i].x;
sub->rects[i]->y = ctx->presentation.objects[i].y;
- sub->rects[i]->w = object->w;
- sub->rects[i]->h = object->h;
-
- sub->rects[i]->linesize[0] = object->w;
if (object->rle) {
+ sub->rects[i]->w = object->w;
+ sub->rects[i]->h = object->h;
+
+ sub->rects[i]->linesize[0] = object->w;
+
if (object->rle_remaining_len) {
av_log(avctx, AV_LOG_ERROR, "RLE data length %u is %u bytes shorter than expected\n",
object->rle_data_len, object->rle_remaining_len);