diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-08-08 15:05:48 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-08-08 15:05:48 +0200 |
commit | 9386f334af535634906168d765f1fe6fe105b4ed (patch) | |
tree | fd555374655c7c8a08ead0e818e798c4351edff1 /libavcodec/bitstream.c | |
parent | e1a5ee25e048ec506995e97d6f967a852a8140f4 (diff) | |
download | ffmpeg-9386f334af535634906168d765f1fe6fe105b4ed.tar.gz |
avcodec/bitstream: Dont try to free buffers for static VLCs
Such buffers are not malloced thus freeing would be bad.
Note though this condition never could have happened so this
is more for correctness sake and not a true bugfix
Fixes CID1061047
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/bitstream.c')
-rw-r--r-- | libavcodec/bitstream.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c index 859dc62100..299ee23b4a 100644 --- a/libavcodec/bitstream.c +++ b/libavcodec/bitstream.c @@ -304,13 +304,15 @@ int ff_init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes, continue; \ if (buf[j].bits > 3*nb_bits || buf[j].bits>32) { \ av_log(NULL, AV_LOG_ERROR, "Too long VLC (%d) in init_vlc\n", buf[j].bits);\ - av_free(buf); \ + if (!(flags & INIT_VLC_USE_NEW_STATIC)) \ + av_free(buf); \ return -1; \ } \ GET_DATA(buf[j].code, codes, i, codes_wrap, codes_size); \ if (buf[j].code >= (1LL<<buf[j].bits)) { \ av_log(NULL, AV_LOG_ERROR, "Invalid code in init_vlc\n"); \ - av_free(buf); \ + if (!(flags & INIT_VLC_USE_NEW_STATIC)) \ + av_free(buf); \ return -1; \ } \ if (flags & INIT_VLC_LE) \ |