diff --git a/src/quic_process.cpp b/src/quic_process.cpp index fe86a46..4b677c6 100644 --- a/src/quic_process.cpp +++ b/src/quic_process.cpp @@ -778,7 +778,11 @@ unsigned char parse_quic_all_version(struct quic_info *quic_info, const char *pa if(quic_version>=GQUIC_VERSION_Q001 && quic_version<=GQUIC_VERSION_Q048) { - return parse_quic_uncryption_payload(quic_info, payload+payload_offset, payload_len-payload_offset, thread_seq); + if(payload_len > payload_offset) + { + return parse_quic_uncryption_payload(quic_info, payload+payload_offset, payload_len-payload_offset, thread_seq); + } + return PARSE_RESULT_VERSION; } else if(((quic_version>=MVFST_VERSION_00 && quic_version<=MVFST_VERSION_0F) || (quic_version>=GQUIC_VERSION_Q049 && quic_version<=GQUIC_VERSION_Q059) || diff --git a/test/pcap/quic_len_-2.pcapng b/test/pcap/quic_len_-2.pcapng new file mode 100644 index 0000000..44f3965 Binary files /dev/null and b/test/pcap/quic_len_-2.pcapng differ