From fcb096f7cd02e9c3cf4635ed002ad9bb0caad82e Mon Sep 17 00:00:00 2001 From: Frederic Lecaille Date: Thu, 4 Apr 2024 11:08:56 +0200 Subject: [PATCH] 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. --- src/stick_table.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/stick_table.c b/src/stick_table.c index fe9fb76ff..debec567c 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)