From: Willy Tarreau Date: Tue, 9 Aug 2016 10:08:41 +0000 (+0200) Subject: BUG/MEDIUM: stick-table: properly convert binary samples to keys X-Git-Tag: v1.7-dev4~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f65c6c0456410396ab7033c7db0ad892d14a4577;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/stick_table.c b/src/stick_table.c index 13816bbed2..b0aabd4092 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;