From 8950270b2eeff0d85f79503c3f83cae572d9a35d Mon Sep 17 00:00:00 2001 From: Ryan Hamilton Date: Thu, 2 Nov 2023 08:08:14 -0700 Subject: [PATCH] quic: Fix potential pointer alignmnet issue in adjustNewConnectionIdForRouting (#30670) Casting old_connection_id_ptr to a uint32_t is not safe because there is no guarantee that old_connection_id_ptr is 32 bit aligned. Instead, just call memcpy() explicitly with the size of 4. Risk Level: Low Testing: Existing Docs Changes: N/A Release Notes: N/A Platform Specific Features: N/A Signed-off-by: Ryan Hamilton --- source/common/quic/envoy_quic_utils.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/common/quic/envoy_quic_utils.cc b/source/common/quic/envoy_quic_utils.cc index 7dc7cb7c16f6..b036737992b9 100644 --- a/source/common/quic/envoy_quic_utils.cc +++ b/source/common/quic/envoy_quic_utils.cc @@ -285,9 +285,8 @@ void adjustNewConnectionIdForRouting(quic::QuicConnectionId& new_connection_id, const quic::QuicConnectionId& old_connection_id) { char* new_connection_id_data = new_connection_id.mutable_data(); const char* old_connection_id_ptr = old_connection_id.data(); - auto* first_four_bytes = reinterpret_cast(old_connection_id_ptr); // Override the first 4 bytes of the new CID to the original CID's first 4 bytes. - safeMemcpyUnsafeDst(new_connection_id_data, first_four_bytes); + memcpy(new_connection_id_data, old_connection_id_ptr, 4); // NOLINT(safe-memcpy) } } // namespace Quic