]> git.sesse.net Git - ffmpeg/commitdiff
avformat/wavdec: Check avio_get_str16le() for failure
authorMichael Niedermayer <michael@niedermayer.cc>
Fri, 29 Jan 2021 22:58:04 +0000 (23:58 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Sun, 31 Jan 2021 13:37:07 +0000 (14:37 +0100)
Fixes: out of array access
Fixes: 29195/clusterfuzz-testcase-minimized-ffmpeg_dem_W64_fuzzer-5037853281222656
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavformat/wavdec.c

index 3da4150f0587154acd4fd7aaa72461d493cbd0c6..2fba9a08c84c65824959ddef13cc23dfbd6d3481 100644 (file)
@@ -922,6 +922,10 @@ static int w64_read_header(AVFormatContext *s)
                     return AVERROR(ENOMEM);
 
                 ret = avio_get_str16le(pb, chunk_size, value, chunk_size);
+                if (ret < 0) {
+                    av_free(value);
+                    return ret;
+                }
                 avio_skip(pb, chunk_size - ret);
 
                 av_dict_set(&s->metadata, chunk_key, value, AV_DICT_DONT_STRDUP_VAL);