mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
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. Originally committed as revision 21939 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
044a950d82
commit
4c4e746566
@ -158,11 +158,12 @@ static int build_table(VLC *vlc, int table_nb_bits,
|
||||
#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 @@ static int build_table(VLC *vlc, int table_nb_bits,
|
||||
table[j][1] = -n1; //bits
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* second pass : fill auxillary tables recursively */
|
||||
|
Loading…
Reference in New Issue
Block a user