From: Amaury Denoyelle Date: Tue, 14 Jun 2022 14:36:15 +0000 (+0200) Subject: MINOR: qpack: add ABORT_NOW on unimplemented decoding X-Git-Tag: v2.7-dev1~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=28d3c2489f2f6e159757f8daf37d097afaa2ef9b;p=thirdparty%2Fhaproxy.git MINOR: qpack: add ABORT_NOW on unimplemented decoding Post-base indices is not supported at the moment for decoding. This should never be encountered as it is only used with a dynamic table. However, haproxy deactivates support for the dynamic table via its SETTINGS. Use ABORT_NOW() if this situation happens anyway. This should help debugging instead of silently failed without error reporting. --- diff --git a/src/qpack-dec.c b/src/qpack-dec.c index 5546590bba..aac35a6478 100644 --- a/src/qpack-dec.c +++ b/src/qpack-dec.c @@ -212,7 +212,15 @@ int qpack_decode_fs(const unsigned char *raw, size_t len, struct buffer *tmp, qpack_debug_printf(stderr, "efl_type=0x%02x\n", efl_type); if (efl_type == QPACK_LFL_WPBNM) { - /* Literal field line with post-base name reference */ + /* Literal field line with post-base name reference + * + * TODO not implemented + * + * For the moment, this should never happen as + * currently we do not support dynamic table insertion + * and specify an empty table size. + */ +#if 0 uint64_t index __maybe_unused, length; unsigned int n __maybe_unused, h __maybe_unused; @@ -242,12 +250,21 @@ int qpack_decode_fs(const unsigned char *raw, size_t len, struct buffer *tmp, goto out; } - /* XXX Value string XXX */ raw += length; len -= length; +#endif + ABORT_NOW(); /* dynamic table not supported */ } else if (efl_type == QPACK_IFL_WPBI) { - /* Indexed field line with post-base index */ + /* Indexed field line with post-base index + * + * TODO not implemented + * + * For the moment, this should never happen as + * currently we do not support dynamic table insertion + * and specify an empty table size. + */ +#if 0 uint64_t index __maybe_unused; qpack_debug_printf(stderr, "indexed field line with post-base index:"); @@ -259,6 +276,8 @@ int qpack_decode_fs(const unsigned char *raw, size_t len, struct buffer *tmp, } qpack_debug_printf(stderr, " index=%llu", (unsigned long long)index); +#endif + ABORT_NOW(); /* dynamic table not supported */ } else if (efl_type & QPACK_IFL_BIT) { /* Indexed field line */