After the fix the reproducer finishes in 43 ms instead of OOM-ing at the
2 GB limit. Legitimate .mkv/.webm fate samples still parse cleanly.
Fixes:
471604245/clusterfuzz-testcase-minimized-ffmpeg_dem_WEBM_DASH_MANIFEST_fuzzer-
6662979358883840
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit
c7e0bac050a672a220ed8ee6dbdc25abfb3336a8)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
if ((unsigned)list->nb_elem + 1 >= UINT_MAX / syntax->list_elem_size)
return AVERROR(ENOMEM);
+ if (syntax->id == MATROSKA_ID_TRACKENTRY &&
+ list->nb_elem >= matroska->ctx->max_streams) {
+ av_log(matroska->ctx, AV_LOG_ERROR,
+ "Number of tracks exceeds max_streams (%d)\n",
+ matroska->ctx->max_streams);
+ return AVERROR(EINVAL);
+ }
newelem = av_fast_realloc(list->elem,
&list->alloc_elem_size,
(list->nb_elem + 1) * syntax->list_elem_size);