From f65c6c0456410396ab7033c7db0ad892d14a4577 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 9 Aug 2016 12:08:41 +0200 Subject: [PATCH] BUG/MEDIUM: stick-table: properly convert binary samples to keys The binary sample to stick-table key conversion is wrong. It doesn't check that the binary sample is writable before padding it. After a quick audit, it doesn't look like any existing sample fetch function can trigger this bug. The correct fix consists in calling smp_make_rw() prior to padding the sample. This fix should be backported to 1.6. --- src/stick_table.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/stick_table.c b/src/stick_table.c index 13816bb..b0aabd4 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -505,6 +505,9 @@ struct stktable_key *smp_to_stkey(struct sample *smp, struct stktable *t) case SMP_T_BIN: if (smp->data.u.str.len < t->key_size) { /* This type needs padding with 0. */ + if (!smp_make_rw(smp)) + return NULL; + if (smp->data.u.str.size < t->key_size) if (!smp_dup(smp)) return NULL; -- 1.7.10.4