From: 胡玮文 Date: Sat, 16 Mar 2024 11:33:44 +0000 (+0800) Subject: common/Journald: fix alias and mis-align X-Git-Tag: v20.0.0~1992^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b4a96fa59dd610a935053b7ac97a1715bca27db2;p=ceph.git common/Journald: fix alias and mis-align by replacing assignment with memcpy. The original version breaks the strict aliasing rule, and may be mis-aligned, which may cause undefined behavior. Signed-off-by: 胡玮文 --- diff --git a/src/common/Journald.cc b/src/common/Journald.cc index a1321c7eea8e..983a190b1a70 100644 --- a/src/common/Journald.cc +++ b/src/common/Journald.cc @@ -125,7 +125,7 @@ MESSAGE uint64_t msg_len = htole64(e.size()); meta_buf.resize(meta_buf.size() + sizeof(msg_len)); - *(reinterpret_cast(meta_buf.end()) - 1) = htole64(e.size()); + memcpy(meta_buf.end() - sizeof(msg_len), &msg_len, sizeof(msg_len)); meta_vec().iov_base = meta_buf.data(); meta_vec().iov_len = meta_buf.size();