Skip to content

Commit a7a5816

Browse files
committed
[NFC][llvm-objcopy] Fixing a ubi-san problem with unaligned memory writes.
llvm-svn: 341343
1 parent 5a40cd5 commit a7a5816

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

llvm/tools/llvm-objcopy/Object.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,10 @@ void ELFSectionWriter<ELFT>::visit(const CompressedSection &Sec) {
153153
ArrayRef<uint8_t> Magic = {'Z', 'L', 'I', 'B'};
154154
std::copy(Magic.begin(), Magic.end(), Buf);
155155
Buf += Magic.size();
156-
uint64_t *DecompressedSizePtr = reinterpret_cast<uint64_t *>(Buf);
157-
*DecompressedSizePtr = support::endian::read64be(&Sec.DecompressedSize);
158-
Buf += sizeof(Sec.DecompressedSize);
156+
const uint64_t DecompressedSize =
157+
support::endian::read64be(&Sec.DecompressedSize);
158+
memcpy(Buf, &DecompressedSize, sizeof(DecompressedSize));
159+
Buf += sizeof(DecompressedSize);
159160
} else {
160161
auto Chdr = reinterpret_cast<Elf_Chdr_Impl<ELFT> *>(Buf);
161162
Chdr->ch_type = ELF::ELFCOMPRESS_ZLIB;

0 commit comments

Comments
 (0)