webp demux failure
|Reported by:||jzern||Owned by:|
|Blocking:||Reproduced by developer:||no|
|Analyzed by developer:||no|
Summary of the bug:
If a valid webp file contains extra data after the reported file (riff) size the demuxer will fail, see below. This can occur in some transcode pipeline if e.g., padding bytes from encryption are not stripped. libwebp tools handle the attached as they only parse through the reported riff size.
How to reproduce:
% ./ffmpeg -y -i test.webp out.ppm ffmpeg version N-94694-g95780f4dcb Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8 (Debian 8.2.0-14+build1) configuration: --enable-libwebp libavutil 56. 33.100 / 56. 33.100 libavcodec 58. 56.100 / 58. 56.100 libavformat 58. 31.104 / 58. 31.104 libavdevice 58. 9.100 / 58. 9.100 libavfilter 7. 58.101 / 7. 58.101 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 Input #0, webp_pipe, from 'test.webp': Duration: N/A, bitrate: N/A Stream #0:0: Video: webp, yuv420p(tv, bt470bg/unknown/unknown), 128x128, 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (webp (native) -> ppm (native)) Press [q] to stop, [?] for help [webp @ 0x55c25b430980] Multiple ff_thread_finish_setup() calls [webp @ 0x55c25b430980] A frame threaded decoder did not free the frame on failure. This is a bug, please report it. Assertion frame->buf failed at src/libavcodec/decode.c:618