From 28d3c2489f2f6e159757f8daf37d097afaa2ef9b Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Tue, 14 Jun 2022 16:36:15 +0200 Subject: [PATCH] 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. --- src/qpack-dec.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/qpack-dec.c b/src/qpack-dec.c index 5546590bb..aac35a647 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 */