diff options
author | Wang Yaqiang <wangyaqiang03@kuaishou.com> | 2023-03-09 17:29:12 +0800 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2023-03-09 21:17:15 +0100 |
commit | 81bc7bc52e27d592c00fb4ed39a448d18d4d42db (patch) | |
tree | 20792082cfd2570d6653e704392d8281b72c048f /libavformat/img2dec.c | |
parent | 1a4560ce4e957f16fbfce9d5e563f3c06ded37d1 (diff) | |
download | ffmpeg-81bc7bc52e27d592c00fb4ed39a448d18d4d42db.tar.gz |
avformat/img2dec: fix unable to find svg format when the svg resources start with "<svg" or "<!--"
svg is xml, but <?xml is not required,
it can start with <svg and can have multiple empty lines,
or start with <!-- include some comments,
but must first line if start with <?xml.
Signed-off-by: Wang Yaqiang <wangyaqiang03@kuaishou.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/img2dec.c')
-rw-r--r-- | libavformat/img2dec.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 5a63d7c81d..c037b6aa88 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -964,8 +964,13 @@ static int svg_probe(const AVProbeData *p) { const uint8_t *b = p->buf; const uint8_t *end = p->buf + p->buf_size; - - if (memcmp(p->buf, "<?xml", 5)) + while (b < end && av_isspace(*b)) + b++; + if (b >= end - 5) + return 0; + if (!memcmp(b, "<svg", 4)) + return AVPROBE_SCORE_EXTENSION + 1; + if (memcmp(p->buf, "<?xml", 5) && memcmp(b, "<!--", 4)) return 0; while (b < end) { int inc = ff_subtitles_next_line(b); |