[FFmpeg-cvslog] vp9: fix crash if segmentation=1, keyframe/intraonly=1 and updatemap=0.

Ronald S. Bultje git at videolan.org
Tue Dec 24 12:08:09 CET 2013


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Mon Dec 23 21:40:13 2013 -0500| [acafbb4dd26014305bae331d80b9ba7b918d8b8a] | committer: Michael Niedermayer

vp9: fix crash if segmentation=1, keyframe/intraonly=1 and updatemap=0.

The reference map is never used in such cases, but we accidently copied
it anyway. This could cause crashes if this map has not yet been
allocated. Fixes trac ticket 3188.

Reviewed-by: Clément Bœsch <u at pkh.me>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=acafbb4dd26014305bae331d80b9ba7b918d8b8a
---

 libavcodec/vp9.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
index 88c5bc6..78b8d2c 100644
--- a/libavcodec/vp9.c
+++ b/libavcodec/vp9.c
@@ -264,7 +264,8 @@ static int vp9_alloc_frame(AVCodecContext *ctx, VP9Frame *f)
     f->mv = (struct VP9mvrefPair *) (f->extradata->data + sz);
 
     // retain segmentation map if it doesn't update
-    if (s->segmentation.enabled && !s->segmentation.update_map) {
+    if (s->segmentation.enabled && !s->segmentation.update_map &&
+        !s->keyframe && !s->intraonly) {
         memcpy(f->segmentation_map, s->frames[LAST_FRAME].segmentation_map, sz);
     }
 



More information about the ffmpeg-cvslog mailing list