aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkvk1920 <kvk1920@yandex-team.com>2025-07-29 14:19:14 +0300
committerkvk1920 <kvk1920@yandex-team.com>2025-07-29 14:33:50 +0300
commit1aa8bdbe25c0cfcf585fb5e4247e21492594b163 (patch)
tree57b2f1234f8581a962e48ad1d73b427804af7c24
parent3adce6d4139d38d2620a76a703b10b666db0cf12 (diff)
downloadydb-1aa8bdbe25c0cfcf585fb5e4247e21492594b163.tar.gz
YT-18571: fix UB in TryDeserializeProtoWithEnvelope()
commit_hash:f7f428c98fde0d9283df07abc1085a3bd4ba8c81
-rw-r--r--yt/yt/core/misc/protobuf_helpers.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/yt/yt/core/misc/protobuf_helpers.cpp b/yt/yt/core/misc/protobuf_helpers.cpp
index 2ed1448c919..62c0050cc2e 100644
--- a/yt/yt/core/misc/protobuf_helpers.cpp
+++ b/yt/yt/core/misc/protobuf_helpers.cpp
@@ -182,7 +182,9 @@ bool TryDeserializeProtoWithEnvelope(
return false;
}
- const auto* fixedHeader = reinterpret_cast<const TEnvelopeFixedHeader*>(data.Begin());
+ TEnvelopeFixedHeader fixedHeaderStorage;
+ ::memcpy(&fixedHeaderStorage, data.Begin(), sizeof(fixedHeaderStorage));
+ const auto* fixedHeader = &fixedHeaderStorage;
const char* sourceHeader = data.Begin() + sizeof(TEnvelopeFixedHeader);
if (fixedHeader->EnvelopeSize + sizeof(*fixedHeader) > data.Size()) {
return false;