From: Tom Peters (thopeter) Date: Tue, 12 Oct 2021 20:28:36 +0000 (+0000) Subject: Merge pull request #3099 in SNORT/snort3 from ~MDAGON/snort3:try_fix to master X-Git-Tag: 3.1.15.0~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5ac7824612b3267ad21aaccb128fcc30a5a445e;p=thirdparty%2Fsnort3.git Merge pull request #3099 in SNORT/snort3 from ~MDAGON/snort3:try_fix to master Squashed commit of the following: commit 31bfb668b854b15698e54fe4b2ea3ec68388d484 Author: Maya Dagon Date: Fri Oct 8 16:50:36 2021 -0400 http2_inspect: partial header with priority flag set --- diff --git a/src/service_inspectors/http2_inspect/http2_headers_frame_header.cc b/src/service_inspectors/http2_inspect/http2_headers_frame_header.cc index 93aa15dcc..a86514221 100644 --- a/src/service_inspectors/http2_inspect/http2_headers_frame_header.cc +++ b/src/service_inspectors/http2_inspect/http2_headers_frame_header.cc @@ -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)) { diff --git a/src/service_inspectors/http2_inspect/http2_headers_frame_trailer.cc b/src/service_inspectors/http2_inspect/http2_headers_frame_trailer.cc index 723b3ed08..e90a879b4 100644 --- a/src/service_inspectors/http2_inspect/http2_headers_frame_trailer.cc +++ b/src/service_inspectors/http2_inspect/http2_headers_frame_trailer.cc @@ -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)) {