From 15fdb838c7361bad786098a05745edcd61c47de2 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Thu, 15 Mar 2018 22:56:28 -0700 Subject: ubsan: Fix type mismatch in compact mode for document data We were misaligning document data on 64-bit platforms by placing 8b pointers at 4b offsets; fix this by reserving a full pointer worth of bytes for page marker. --- src/pugixml.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 9e6fe48..94dca48 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -6875,7 +6875,8 @@ namespace pugi assert(!_root); #ifdef PUGIXML_COMPACT - const size_t page_offset = sizeof(uint32_t); + // space for page marker for the first page (uint32_t), rounded up to pointer size; assumes pointers are at least 32-bit + const size_t page_offset = sizeof(void*); #else const size_t page_offset = 0; #endif -- cgit v1.2.3