From 56349939e423c29c5bda99e0f2d070d46ffce6d6 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Thu, 6 Nov 2014 09:33:05 +0100 Subject: Verify that compact page encoding is safe Since page size can be customized let's do a special validation check for compact encoding. Right now it's redundant since page size is limited by 64k in alloc_string, but that may change in the future. --- src/pugixml.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/pugixml.cpp') diff --git a/src/pugixml.cpp b/src/pugixml.cpp index ef9400f..e5fd4b2 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -667,6 +667,8 @@ PUGI__NS_BEGIN public: compact_header(xml_memory_page* page, unsigned int flags) { + PUGI__STATIC_ASSERT(sizeof(xml_memory_page) + xml_memory_page_size <= (1 << (16 + compact_alignment_log2))); + ptrdiff_t page_offset = (reinterpret_cast(this) - reinterpret_cast(page)) >> compact_alignment_log2; assert(page_offset >= 0 && page_offset < (1 << 16)); -- cgit v1.2.3