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 <key> passed as parameter. But the documentation of this function
says it supports this case where the <key> passed as parameter could be null.
Move the nullity test on <key> at first statement of this function.
Thanks to @chipitsine for having reported this issue in GH #2518.
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
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)