]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #3099 in SNORT/snort3 from ~MDAGON/snort3:try_fix to master
authorTom Peters (thopeter) <thopeter@cisco.com>
Tue, 12 Oct 2021 20:28:36 +0000 (20:28 +0000)
committerTom Peters (thopeter) <thopeter@cisco.com>
Tue, 12 Oct 2021 20:28:36 +0000 (20:28 +0000)
Squashed commit of the following:

commit 31bfb668b854b15698e54fe4b2ea3ec68388d484
Author: Maya Dagon <mdagon@cisco.com>
Date:   Fri Oct 8 16:50:36 2021 -0400

    http2_inspect: partial header with priority flag set

src/service_inspectors/http2_inspect/http2_headers_frame_header.cc
src/service_inspectors/http2_inspect/http2_headers_frame_trailer.cc

index 93aa15dccfd330223a54fdc997e4fcb4429ccb30..a8651422190599b8399fbe8bcc5f76e6c3fc3dac 100644 (file)
@@ -54,8 +54,10 @@ Http2HeadersFrameHeader::Http2HeadersFrameHeader(const uint8_t* header_buffer,
             session_data->infractions[source_id]);
 
     // Decode headers
-    if (!hpack_decoder->decode_headers((data.start() + hpack_headers_offset), data.length() -
-        hpack_headers_offset, decoded_headers, start_line_generator, false))
+    const uint32_t encoded_headers_length = (data.length() > hpack_headers_offset) ?
+        data.length() - hpack_headers_offset : 0;
+    if (!hpack_decoder->decode_headers((data.start() + hpack_headers_offset),
+        encoded_headers_length, decoded_headers, start_line_generator, false))
     {
         if (!(*session_data->infractions[source_id] & INF_TRUNCATED_HEADER_LINE))
         {
index 723b3ed0840eae40226dd82b626e4b1dd220d630..e90a879b460798513c281c565fcb92b69f856d01 100644 (file)
@@ -56,8 +56,10 @@ Http2HeadersFrameTrailer::Http2HeadersFrameTrailer(const uint8_t* header_buffer,
     }
 
     // Decode trailers
-    if (!hpack_decoder->decode_headers((data.start() + hpack_headers_offset), data.length() -
-        hpack_headers_offset, decoded_headers, nullptr, true))
+    const uint32_t encoded_headers_length = (data.length() > hpack_headers_offset) ?
+        data.length() - hpack_headers_offset : 0;
+    if (!hpack_decoder->decode_headers((data.start() + hpack_headers_offset),
+        encoded_headers_length, decoded_headers, nullptr, true))
     {
         if (!(*session_data->infractions[source_id] & INF_TRUNCATED_HEADER_LINE))
         {