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