avconv: Do not copy extradata if source buffer is empty
authorVittorio Giovara <vittorio.giovara@gmail.com>
Fri, 3 Jun 2016 16:14:50 +0000 (12:14 -0400)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Mon, 6 Jun 2016 15:56:21 +0000 (11:56 -0400)
Fixes clang-usan runtime error "null pointer passed as argument 2,
which is declared to never be null" while streamcopying.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
avconv.c

index d863103..2e3bde9 100644 (file)
--- a/avconv.c
+++ b/avconv.c
@@ -1875,12 +1875,15 @@ static int transcode_init(void)
             par_dst->bit_rate        = par_src->bit_rate;
             par_dst->field_order     = par_src->field_order;
             par_dst->chroma_location = par_src->chroma_location;
-            par_dst->extradata       = av_mallocz(extra_size);
-            if (!par_dst->extradata) {
-                return AVERROR(ENOMEM);
+            if (par_src->extradata != NULL) {
+                par_dst->extradata = av_mallocz(extra_size);
+                if (!par_dst->extradata) {
+                    return AVERROR(ENOMEM);
+                }
+                memcpy(par_dst->extradata, par_src->extradata,
+                       par_src->extradata_size);
+                par_dst->extradata_size = par_src->extradata_size;
             }
-            memcpy(par_dst->extradata, par_src->extradata, par_src->extradata_size);
-            par_dst->extradata_size = par_src->extradata_size;
 
             ost->st->time_base = ist->st->time_base;