• wm4's avatar
    avformat/matroskadec: fix handling of recursive SeekHead elements · 6551acab
    wm4 authored
    When matroska_execute_seekhead() is called, it goes through the list of
    seekhead entries and attempts to read elements not read yet. When doing
    this, the parser can find further SeekHead elements, and will extend the
    matroska->seekhead list. This can lead to a (practically) infinite loop
    with certain broken files. (Maybe it can happen even with valid files.
    The demuxer doesn't seem to check correctly whether an element has
    already been read.)
    
    Fix this by ignoring elements that were added to the seekhead field
    during executing seekhead entries.
    
    This does not fix the possible situation when multiple SeekHead elements
    after the file header (i.e. occur after the "before_pos" file position)
    point to the same elements. These elements will probably be parsed
    multiple times, likely leading to bugs.
    
    Fixes ticket #4162.
    Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
    6551acab
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
RELEASE_NOTES Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_vda.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...