From b76066e7802174b3b45c127efe957b4fb718f032 Mon Sep 17 00:00:00 2001 From: Andrew Pilloud Date: Wed, 22 Apr 2026 11:33:53 -0700 Subject: [PATCH] Fix misaligned pointer use in BufferDetail.hh and BufferReader.hh --- lang/c++/include/avro/buffer/BufferReader.hh | 3 ++- lang/c++/include/avro/buffer/detail/BufferDetail.hh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lang/c++/include/avro/buffer/BufferReader.hh b/lang/c++/include/avro/buffer/BufferReader.hh index 39b23fa7084..a08dc251207 100644 --- a/lang/c++/include/avro/buffer/BufferReader.hh +++ b/lang/c++/include/avro/buffer/BufferReader.hh @@ -20,6 +20,7 @@ #define avro_BufferReader_hh__ #include "Buffer.hh" +#include #include #ifdef min @@ -233,7 +234,7 @@ private: } if (sizeof(T) <= chunkRemaining()) { - val = *(reinterpret_cast(addr())); + memcpy(&val, addr(), sizeof(T)); incrementChunk(sizeof(T)); } else { read(reinterpret_cast(&val), sizeof(T)); diff --git a/lang/c++/include/avro/buffer/detail/BufferDetail.hh b/lang/c++/include/avro/buffer/detail/BufferDetail.hh index 5ef52a5fa84..30745008fdc 100644 --- a/lang/c++/include/avro/buffer/detail/BufferDetail.hh +++ b/lang/c++/include/avro/buffer/detail/BufferDetail.hh @@ -20,6 +20,7 @@ #define avro_BufferDetail_hh__ #include +#include #include #include #include @@ -320,7 +321,7 @@ public: if (freeSpace_ && (sizeof(T) <= writeChunks_.front().freeSize())) { // fast path, there's enough room in the writeable chunk to just // straight out copy it - *(reinterpret_cast(writeChunks_.front().tellWritePos())) = val; + memcpy(writeChunks_.front().tellWritePos(), &val, sizeof(T)); postWrite(sizeof(T)); } else { // need to fixup chunks first, so use the regular memcpy