As reported in issue #331, the code used to cast a 32-bit to a 64-bit
stick-table key is wrong. It only copies the 32 lower bits in place on
little endian machines or overwrites the 32 higher ones on big endian
machines. It ought to simply remove the wrong cast dereference.
This bug was introduced when changing stick table keys to samples in
1.6-dev4 by commit
bc8c404449 ("MAJOR: stick-tables: use sample types
in place of dedicated types") so it the fix must be backported as far
as 1.6.
/* The stick table require a 32bit unsigned int, "sint" is a
* signed 64 it, so we can convert it inplace.
*/
- *(unsigned int *)&smp->data.u.sint = (unsigned int)smp->data.u.sint;
+ smp->data.u.sint = (unsigned int)smp->data.u.sint;
static_table_key.key = &smp->data.u.sint;
static_table_key.key_len = 4;
break;