diff options
author | Thierry Foucu <tfoucu@gmail.com> | 2020-08-20 12:14:52 -0700 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2020-08-22 22:51:07 +0200 |
commit | 5cf439e72ec3432fc52f73badfd0b5ec90162ffa (patch) | |
tree | 4b48b110a8904228769577ac80e92a7e0a3afb76 /libavformat | |
parent | 118e63dff16b5a302599ea1c7f4200d217674a50 (diff) | |
download | ffmpeg-5cf439e72ec3432fc52f73badfd0b5ec90162ffa.tar.gz |
libavformat/ffmetadec.c: Fix Use-of-uninitialized-value
Check the return value of sscanf as it can return -1(EOF), for example
when the first char in the line is 0x00
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/ffmetadec.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavformat/ffmetadec.c b/libavformat/ffmetadec.c index 45c92f1ff6..0ea89fe3f3 100644 --- a/libavformat/ffmetadec.c +++ b/libavformat/ffmetadec.c @@ -101,19 +101,22 @@ static AVChapter *read_chapter(AVFormatContext *s) uint8_t line[256]; int64_t start, end; AVRational tb = {1, 1e9}; + int ret; get_line(s->pb, line, sizeof(line)); if (sscanf(line, "TIMEBASE=%d/%d", &tb.num, &tb.den)) get_line(s->pb, line, sizeof(line)); - if (!sscanf(line, "START=%"SCNd64, &start)) { + ret = sscanf(line, "START=%"SCNd64, &start); + if (ret <= 0) { av_log(s, AV_LOG_ERROR, "Expected chapter start timestamp, found %s.\n", line); start = (s->nb_chapters && s->chapters[s->nb_chapters - 1]->end != AV_NOPTS_VALUE) ? s->chapters[s->nb_chapters - 1]->end : 0; } else get_line(s->pb, line, sizeof(line)); - if (!sscanf(line, "END=%"SCNd64, &end)) { + ret = sscanf(line, "END=%"SCNd64, &end); + if (ret <= 0) { av_log(s, AV_LOG_ERROR, "Expected chapter end timestamp, found %s.\n", line); end = AV_NOPTS_VALUE; } |