]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: stick-tables: Missing stick-table key nullity check
authorFrederic Lecaille <flecaille@haproxy.com>
Thu, 4 Apr 2024 09:08:56 +0000 (11:08 +0200)
committerFrederic Lecaille <flecaille@haproxy.com>
Thu, 4 Apr 2024 09:08:56 +0000 (11:08 +0200)
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.

src/stick_table.c

index fe9fb76ff7d73606a67619907da1a6adc51e24f5..debec567cff6aca2bf76588b094a051a8eacb6be 100644 (file)
@@ -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)