]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: qpack: add ABORT_NOW on unimplemented decoding
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 14 Jun 2022 14:36:15 +0000 (16:36 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 15 Jun 2022 12:56:05 +0000 (14:56 +0200)
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

index 5546590bbaf82a73cb9def35ea34bfc12710aca5..aac35a64785e39abda0d40a988a3c425adb0a8ae 100644 (file)
@@ -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 */