mirror of
https://github.com/haproxy/haproxy.git
synced 2026-05-27 20:02:17 -04:00
BUG/MINOR: qpack: Fix index calculation in debug functions
Although qpack_idx_to_name and qpack_idx_to_value are currently only called within uncompiled debug code, they contained an index bug. They passed absolute indexes directly to qpack_get_dte instead of relative dynamic table indexes. This patch fixes the logic by subtracting QPACK_SHT_SIZE and guarding against static table index lookups. Should be easily backported to all versions.
This commit is contained in:
parent
091768ab3e
commit
40313cd0d5
1 changed files with 10 additions and 4 deletions
|
|
@ -93,24 +93,30 @@ static inline struct ist qpack_get_value(const struct qpack_dht *dht, const stru
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* takes an idx, returns the associated name */
|
||||
/* takes an absolute idx (including static table offset), returns the associated name */
|
||||
static inline struct ist qpack_idx_to_name(const struct qpack_dht *dht, uint32_t idx)
|
||||
{
|
||||
const struct qpack_dte *dte;
|
||||
|
||||
dte = qpack_get_dte(dht, idx);
|
||||
if (idx < QPACK_SHT_SIZE)
|
||||
return ist("### ERR ###"); /* static table entries not accessible via dht */
|
||||
|
||||
dte = qpack_get_dte(dht, idx - QPACK_SHT_SIZE);
|
||||
if (!dte)
|
||||
return ist("### ERR ###"); // error
|
||||
|
||||
return qpack_get_name(dht, dte);
|
||||
}
|
||||
|
||||
/* takes an idx, returns the associated value */
|
||||
/* takes an absolute idx (including static table offset), returns the associated value */
|
||||
static inline struct ist qpack_idx_to_value(const struct qpack_dht *dht, uint32_t idx)
|
||||
{
|
||||
const struct qpack_dte *dte;
|
||||
|
||||
dte = qpack_get_dte(dht, idx);
|
||||
if (idx < QPACK_SHT_SIZE)
|
||||
return ist("### ERR ###"); /* static table entries not accessible via dht */
|
||||
|
||||
dte = qpack_get_dte(dht, idx - QPACK_SHT_SIZE);
|
||||
if (!dte)
|
||||
return ist("### ERR ###"); // error
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue