diff --git a/gfx/ots/include/opentype-sanitiser.h b/gfx/ots/include/opentype-sanitiser.h --- a/gfx/ots/include/opentype-sanitiser.h +++ b/gfx/ots/include/opentype-sanitiser.h @@ -83,18 +83,20 @@ class OTSStream { if (chksum_buffer_offset_ == 4) { uint32_t chksum; std::memcpy(&chksum, chksum_buffer_, 4); chksum_ += ntohl(chksum); chksum_buffer_offset_ = 0; } while (length >= 4) { - chksum_ += ntohl(*reinterpret_cast( - reinterpret_cast(data) + offset)); + uint32_t tmp; + std::memcpy(&tmp, reinterpret_cast(data) + offset, + sizeof(uint32_t)); + chksum_ += ntohl(tmp); length -= 4; offset += 4; } if (length) { if (chksum_buffer_offset_ != 0) return false; // not reached if (length > 4) return false; // not reached std::memcpy(chksum_buffer_,