Mercurial > libavcodec.hg
changeset 11232:7f75cd2bf32e libavcodec
Avoid negative shifts in build_table()
A shift by a negative amount has undefined behaviour. Even though
the result of this shift is never used, the shift itself could
cause an exception of some kind.
author | mru |
---|---|
date | Sun, 21 Feb 2010 15:11:57 +0000 |
parents | 0fc1cdd984b7 |
children | 2d49996fe7d1 |
files | bitstream.c |
diffstat | 1 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/bitstream.c Sun Feb 21 13:28:46 2010 +0000 +++ b/bitstream.c Sun Feb 21 15:11:57 2010 +0000 @@ -158,11 +158,12 @@ #endif /* if code matches the prefix, it is in the table */ n -= n_prefix; + if (n > 0) { if(flags & INIT_VLC_LE) code_prefix2= code & (n_prefix>=32 ? 0xffffffff : (1 << n_prefix)-1); else code_prefix2= code >> n; - if (n > 0 && code_prefix2 == code_prefix) { + if (code_prefix2 == code_prefix) { if (n <= table_nb_bits) { /* no need to add another table */ j = (code << (table_nb_bits - n)) & (table_size - 1); @@ -196,6 +197,7 @@ table[j][1] = -n1; //bits } } + } } /* second pass : fill auxillary tables recursively */