OSDN Git Service

swresample/swresample: Check count before memcpy()
authorMichael Niedermayer <michael@niedermayer.cc>
Sat, 10 Dec 2016 00:52:56 +0000 (01:52 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Sat, 10 Dec 2016 01:05:17 +0000 (02:05 +0100)
Fixes undefined operation
Fixes part of 668007-media

Found-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libswresample/swresample.c

index 0ef4dea..dea6139 100644 (file)
@@ -413,9 +413,9 @@ int swri_realloc_audio(AudioData *a, int count){
         return AVERROR(ENOMEM);
     for(i=0; i<a->ch_count; i++){
         a->ch[i]= a->data + i*(a->planar ? countb : a->bps);
-        if(a->planar) memcpy(a->ch[i], old.ch[i], a->count*a->bps);
+        if(a->count && a->planar) memcpy(a->ch[i], old.ch[i], a->count*a->bps);
     }
-    if(!a->planar) memcpy(a->ch[0], old.ch[0], a->count*a->ch_count*a->bps);
+    if(a->count && !a->planar) memcpy(a->ch[0], old.ch[0], a->count*a->ch_count*a->bps);
     av_freep(&old.data);
     a->count= count;