]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
http2: adds check about dynamic headers table size
authorPhilippe Antoine <contact@catenacyber.fr>
Tue, 16 Mar 2021 12:07:30 +0000 (13:07 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 8 Apr 2021 09:13:51 +0000 (11:13 +0200)
rust/src/http2/parser.rs

index 61e4557f6a5909f05503f6740117050d28501bdd..3054a5c436219f8fe6359b7056867e447f46016b 100644 (file)
@@ -564,7 +564,9 @@ fn http2_parse_headers_block_dynamic_size<'a>(
     if (maxsize2 as usize) < dyn_headers.max_size {
         //dyn_headers.max_size is updated later with all headers
         //may evict entries
-        while dyn_headers.current_size > (maxsize2 as usize) {
+        while dyn_headers.current_size > (maxsize2 as usize) && dyn_headers.table.len() > 0 {
+            // we check dyn_headers.table as we may be in best effort
+            // because the previous maxsize was too big for us to retain all the headers
             dyn_headers.current_size -=
                 32 + dyn_headers.table[0].name.len() + dyn_headers.table[0].value.len();
             dyn_headers.table.remove(0);