avformat/vivo: Do not use the general expression evaluator for parsing a floating point value

Fixes: Timeout
Fixes: 41564/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVO_fuzzer-6309014024093696

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
pull/379/head
Michael Niedermayer 3 years ago
parent eab91c3e2e
commit 7b24615565
  1. 8
      libavformat/vivo.c

@ -26,6 +26,7 @@
* @sa http://wiki.multimedia.cx/index.php?title=Vivo * @sa http://wiki.multimedia.cx/index.php?title=Vivo
*/ */
#include "libavutil/avstring.h"
#include "libavutil/parseutils.h" #include "libavutil/parseutils.h"
#include "avformat.h" #include "avformat.h"
#include "internal.h" #include "internal.h"
@ -206,11 +207,12 @@ static int vivo_read_header(AVFormatContext *s)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
value_used = 1; value_used = 1;
} else if (!strcmp(key, "FPS")) { } else if (!strcmp(key, "FPS")) {
AVRational tmp; double d;
if (av_sscanf(value, "%f", &d) != 1)
return AVERROR_INVALIDDATA;
value_used = 1; value_used = 1;
if (!av_parse_ratio(&tmp, value, 10000, AV_LOG_WARNING, s)) fps = av_inv_q(av_d2q(d, 10000));
fps = av_inv_q(tmp);
} }
if (!value_used) if (!value_used)

Loading…
Cancel
Save