mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 22:31:28 +02:00
BUG/MINOR: stick-table: fix an incorrect 32 to 64 bit key conversion
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.
This commit is contained in:
parent
eb46965bbb
commit
28c63c15f5
@ -927,7 +927,7 @@ struct stktable_key *smp_to_stkey(struct sample *smp, struct stktable *t)
|
|||||||
/* The stick table require a 32bit unsigned int, "sint" is a
|
/* The stick table require a 32bit unsigned int, "sint" is a
|
||||||
* signed 64 it, so we can convert it inplace.
|
* 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 = &smp->data.u.sint;
|
||||||
static_table_key.key_len = 4;
|
static_table_key.key_len = 4;
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user