[FFmpeg-devel] [PATCH] ac3_probe input buffer overrun
Wolfram Gloger
wmglo
Sat Sep 1 13:19:42 CEST 2007
Hi,
> and note:
> #define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at t=
> he end of the probe buffer
>
> so this patch is likely wrong but i dunno how much ff_ac3_parse_header
> can read or ...
It can read exactly 7 bytes (maximum).
> note2, valgrind is buggy and sometimes claims uninitalized memory would be
> used while it actually isnt!
Not that I can find any current valgrind bug reports like that,
but in this case the memory is quite definitely uninitialized:
--- ffmpeg-wg/libavformat/utils.c~ 2007-08-30 23:45:32.000000000 +0200
+++ ffmpeg-wg/libavformat/utils.c 2007-09-01 13:00:15.000000000 +0200
@@ -445,6 +445,7 @@
/* read probe data */
pd->buf= av_realloc(pd->buf, probe_size + AVPROBE_PADDING_SIZE);
pd->buf_size = get_buffer(pb, pd->buf, probe_size);
+ memset(pd->buf + pd->buf_size, 0, AVPROBE_PADDING_SIZE);
if (url_fseek(pb, 0, SEEK_SET) < 0) {
url_fclose(pb);
if (url_fopen(pb, filename, URL_RDONLY) < 0) {
should fix it too and could of course replace my patch.
BTW using realloc here seems unneccessary and expensive -- AFAICS the
whole buffer content is always read again. How about replacing this
with av_malloc/av_free?
Or, alternatively, not seek to start and always read the
whole probe_size, but only attempt to read PROBE_BUF_MIN bytes _more_?
Regards,
Wolfram.
More information about the ffmpeg-devel
mailing list