From: Frederic Lecaille Date: Thu, 4 Apr 2024 09:08:56 +0000 (+0200) Subject: BUG/MINOR: stick-tables: Missing stick-table key nullity check X-Git-Tag: v3.0-dev7~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fcb096f7cd02e9c3cf4635ed002ad9bb0caad82e;p=thirdparty%2Fhaproxy.git BUG/MINOR: stick-tables: Missing stick-table key nullity check This bug arrived with this commit: MAJOR: stktable: split the keys across multiple shards to reduce contention At this time, there are no callers which call stktable_get_entry() without checking the nullity of passed as parameter. But the documentation of this function says it supports this case where the passed as parameter could be null. Move the nullity test on at first statement of this function. Thanks to @chipitsine for having reported this issue in GH #2518. --- diff --git a/src/stick_table.c b/src/stick_table.c index fe9fb76ff7..debec567cf 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -699,6 +699,9 @@ struct stksess *stktable_get_entry(struct stktable *table, struct stktable_key * uint shard; size_t len; + if (!key) + return NULL; + if (table->type == SMP_T_STR) len = key->key_len + 1 < table->key_size ? key->key_len : table->key_size - 1; else @@ -706,9 +709,6 @@ struct stksess *stktable_get_entry(struct stktable *table, struct stktable_key * shard = stktable_calc_shard_num(table, key->key, len); - if (!key) - return NULL; - HA_RWLOCK_RDLOCK(STK_TABLE_LOCK, &table->shards[shard].sh_lock); ts = __stktable_lookup_key(table, key, shard); if (ts)