webp: do not call av_frame_free() on the user-provided frame
authorJustin Ruggles <justin.ruggles@gmail.com>
Wed, 4 Dec 2013 21:53:17 +0000 (16:53 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Fri, 6 Dec 2013 01:36:54 +0000 (20:36 -0500)
Fixes double-free on error.

libavcodec/webp.c

index cf431fe..d531a78 100644 (file)
@@ -1129,10 +1129,8 @@ static int vp8_lossless_decode_frame(AVCodecContext *avctx, AVFrame *p,
     if (is_alpha_chunk)
         s->image[IMAGE_ROLE_ARGB].is_alpha_primary = 1;
     ret = decode_entropy_coded_image(s, IMAGE_ROLE_ARGB, w, h);
-    if (ret < 0) {
-        av_frame_free(&p);
+    if (ret < 0)
         goto free_and_return;
-    }
 
     /* apply transformations */
     for (i = s->nb_transforms - 1; i >= 0; i--) {
@@ -1150,10 +1148,8 @@ static int vp8_lossless_decode_frame(AVCodecContext *avctx, AVFrame *p,
             ret = apply_color_indexing_transform(s);
             break;
         }
-        if (ret < 0) {
-            av_frame_free(&p);
+        if (ret < 0)
             goto free_and_return;
-        }
     }
 
     *got_frame   = 1;