OSDN Git Service

vf_select: add NULL-checks in uninit
authorWilliam Yu <genwillyu@gmail.com>
Thu, 11 Aug 2011 13:47:33 +0000 (15:47 +0200)
committerStefano Sabatini <stefano.sabatini-lala@poste.it>
Thu, 11 Aug 2011 14:09:20 +0000 (16:09 +0200)
Fix NULL pointer dereference in case of failed initialization.

Signed-off-by: Stefano Sabatini <stefano.sabatini-lala@poste.it>
libavfilter/vf_select.c

index 3cd2347..33269b6 100644 (file)
@@ -319,14 +319,18 @@ static av_cold void uninit(AVFilterContext *ctx)
     AVFilterBufferRef *picref;
     int i;
 
+    if (select->expr)
     av_expr_free(select->expr);
     select->expr = NULL;
 
+    if (select->pending_frames) {
     for (i = 0; i < av_fifo_size(select->pending_frames)/sizeof(picref); i++) {
         av_fifo_generic_read(select->pending_frames, &picref, sizeof(picref), NULL);
         avfilter_unref_buffer(picref);
     }
     av_fifo_free(select->pending_frames);
+    }
+    select->pending_frames = NULL;
 }
 
 AVFilter avfilter_vf_select = {