diff options
author | kvk1920 <kvk1920@yandex-team.com> | 2025-07-29 14:19:14 +0300 |
---|---|---|
committer | kvk1920 <kvk1920@yandex-team.com> | 2025-07-29 14:33:50 +0300 |
commit | 1aa8bdbe25c0cfcf585fb5e4247e21492594b163 (patch) | |
tree | 57b2f1234f8581a962e48ad1d73b427804af7c24 | |
parent | 3adce6d4139d38d2620a76a703b10b666db0cf12 (diff) | |
download | ydb-1aa8bdbe25c0cfcf585fb5e4247e21492594b163.tar.gz |
YT-18571: fix UB in TryDeserializeProtoWithEnvelope()
commit_hash:f7f428c98fde0d9283df07abc1085a3bd4ba8c81
-rw-r--r-- | yt/yt/core/misc/protobuf_helpers.cpp | 4 |
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; |