avcodec/dvdsubdec: fix accessing dangling pointers
authorwm4 <nfxjfg@googlemail.com>
Thu, 8 Jan 2015 16:19:17 +0000 (17:19 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 8 Jan 2015 16:45:32 +0000 (17:45 +0100)
commit816577716bc6170bccfea3b9e865618b69a4b426
tree418827185f06416c001e80801362814db55f4a27
parent3fd3647fdc5b13348df299a70ada00d712ff84e4
avcodec/dvdsubdec: fix accessing dangling pointers

dvdsub_decode() can call append_to_cached_buf() 2 times, the second time
with ctx->buf as argument. If the second append_to_cached_buf() reallocs
ctx->buf, the argument will be a pointer to the previous, freed block.
This can cause invalid reads at least with some fuzzed files - and
possibly with valid files.

Since packets can apparently not be larger than 64K (even if packets are
combined), just use a fixed size buffer. It will be allocated as part of
the DVDSubContext, and although some memory is "wasted", it's relatively
minimal by modern standards and should be acceptable.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dvdsubdec.c