No public description PiperOrigin-RevId: 639109145
diff --git a/quiche/quic/core/quic_framer.cc b/quiche/quic/core/quic_framer.cc index 013f75e..4e037f5 100644 --- a/quiche/quic/core/quic_framer.cc +++ b/quiche/quic/core/quic_framer.cc
@@ -1880,6 +1880,12 @@ RecordDroppedPacketReason(DroppedPacketReason::DECRYPTION_FAILURE); return RaiseError(QUIC_DECRYPTION_FAILURE); } + + if (packet.length() > kMaxIncomingPacketSize) { + set_detailed_error("Packet too large."); + return RaiseError(QUIC_PACKET_TOO_LARGE); + } + QuicDataReader reader(decrypted_buffer, decrypted_length); // Update the largest packet number after we have decrypted the packet @@ -1898,11 +1904,6 @@ return true; } - if (packet.length() > kMaxIncomingPacketSize) { - set_detailed_error("Packet too large."); - return RaiseError(QUIC_PACKET_TOO_LARGE); - } - // Handle the payload. if (VersionHasIetfQuicFrames(version_.transport_version)) { current_received_frame_type_ = 0;
diff --git a/quiche/quic/core/quic_framer_test.cc b/quiche/quic/core/quic_framer_test.cc index c504be7..c0d27d9 100644 --- a/quiche/quic/core/quic_framer_test.cc +++ b/quiche/quic/core/quic_framer_test.cc
@@ -1097,6 +1097,8 @@ // Make sure the correct error is propagated. EXPECT_THAT(framer_.error(), IsError(QUIC_PACKET_TOO_LARGE)); EXPECT_EQ("Packet too large.", framer_.detailed_error()); + // Make sure the packet wasn't visited. + EXPECT_EQ(0, visitor_.packet_count_); } TEST_P(QuicFramerTest, LongPacketHeader) {