• Andreas Rheinhardt's avatar
    avformat/hlsenc: Don't segfault on uncommon names · 3ab6a923
    Andreas Rheinhardt authored
    The parsing process of the AVOpt-enabled string controlling the mapping
    of input streams to variant streams is roughly as follows: Space and tab
    separate variant stream group maps while the entries in each variant
    stream group map are separated by ','.
    
    The parsing process of each variant stream group proceeded as follows:
    At first the number of occurences of "a:", "v:" and "s:" in each variant
    stream group is calculated so that one can can allocate an array of
    streams with this number of entries. Then the string is split along ','
    and each substring is parsed. If such a substring starts with "a:", "s:"
    or "v:" it is treated as stream specifier and (if there is a correct
    number after ':') a stream of the variant stream is mapped to one of the
    actual input streams.
    
    Nothing actually guarantees that the number of streams allocated initially
    equals the number of streams that are mapped to an actual input stream.
    These numbers can differ if e.g. the name, the sgroup, agroup or ccgroup
    of the variant stream contain "a:", "s:" or "v:".
    
    The problem hereby is that the rest of the code presumes these numbers
    to be equal and segfaults if it isn't (because the corresponding input
    stream is NULL).
    
    This commit fixes this by modifying the initial counting process to only
    count occurences of "a:", "s:" or "v:" that are at the beginning or that
    immediately follow a ','.
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
    3ab6a923
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools 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...
.mailmap Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md 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...
configure Loading commit data...