Exit function early on QUIC_BUG. Verified to fix the repro. Code is not in production. PiperOrigin-RevId: 600538023
diff --git a/quiche/quic/load_balancer/load_balancer_config.cc b/quiche/quic/load_balancer/load_balancer_config.cc index b4b989e..6dfb30c 100644 --- a/quiche/quic/load_balancer/load_balancer_config.cc +++ b/quiche/quic/load_balancer/load_balancer_config.cc
@@ -92,8 +92,11 @@ bool LoadBalancerConfig::FourPassDecrypt( absl::Span<const uint8_t> ciphertext, LoadBalancerServerId& server_id) const { - QUIC_BUG_IF(quic_bug_599862571_02, ciphertext.size() < plaintext_len()) - << "Called FourPassDecrypt with a short Connection ID"; + if (ciphertext.size() < plaintext_len()) { + QUIC_BUG(quic_bug_599862571_02) + << "Called FourPassDecrypt with a short Connection ID"; + return false; + } if (!key_.has_value()) { return false; } @@ -129,8 +132,11 @@ QuicConnectionId LoadBalancerConfig::FourPassEncrypt( absl::Span<uint8_t> plaintext) const { - QUIC_BUG_IF(quic_bug_599862571_03, plaintext.size() < total_len()) - << "Called FourPassEncrypt with a short Connection ID"; + if (plaintext.size() < total_len()) { + QUIC_BUG(quic_bug_599862571_03) + << "Called FourPassEncrypt with a short Connection ID"; + return QuicConnectionId(); + } if (!key_.has_value()) { return QuicConnectionId(); }
diff --git a/quiche/quic/load_balancer/load_balancer_config_test.cc b/quiche/quic/load_balancer/load_balancer_config_test.cc index 0e1b2f6..dd34fb1 100644 --- a/quiche/quic/load_balancer/load_balancer_config_test.cc +++ b/quiche/quic/load_balancer/load_balancer_config_test.cc
@@ -253,13 +253,17 @@ LoadBalancerConfig::Create(0, 3, 4, absl::string_view(raw_key, 16)); uint8_t input[] = {0x0d, 0xd2, 0xd0, 0x5a, 0x7b, 0x0d, 0xe9}; LoadBalancerServerId answer; + bool decrypt_result; EXPECT_QUIC_BUG( - config->FourPassDecrypt( + decrypt_result = config->FourPassDecrypt( absl::Span<const uint8_t>(input, sizeof(input) - 1), answer), "Called FourPassDecrypt with a short Connection ID"); - EXPECT_QUIC_BUG( - config->FourPassEncrypt(absl::Span<uint8_t>(input, sizeof(input))), - "Called FourPassEncrypt with a short Connection ID"); + EXPECT_FALSE(decrypt_result); + QuicConnectionId encrypt_result; + EXPECT_QUIC_BUG(encrypt_result = config->FourPassEncrypt( + absl::Span<uint8_t>(input, sizeof(input))), + "Called FourPassEncrypt with a short Connection ID"); + EXPECT_TRUE(encrypt_result.IsEmpty()); } } // namespace