BUG/MINOR: hpack: validate idx > 0 in hpack_valid_idx()

HPACK indices start at 1, so idx=0 is invalid. The function only checked
the upper bound before, allowing idx=0 to pass as valid. This is harmless
as the code properly checks for existing name and values everywhere, but
then due to the call to hpack_idx_to_phdr(), index 0 will be taken for
:authority. Let's just make sure it's never zero.

This can be backported.
This commit is contained in:
Willy Tarreau 2026-04-28 03:56:35 +02:00
parent 2464c73526
commit 66b00543c5

View File

@ -78,7 +78,7 @@ static inline const struct hpack_dte *hpack_get_dte(const struct hpack_dht *dht,
/* returns non-zero if <idx> is valid for table <dht> */
static inline int hpack_valid_idx(const struct hpack_dht *dht, uint32_t idx)
{
return idx < dht->used + HPACK_SHT_SIZE;
return idx > 0 && idx < dht->used + HPACK_SHT_SIZE;
}
/* return a pointer to the header name for entry <dte>. */