Don't form an out of bounds pointer just to test if it would be out of bounds (i.e. the comparison "if (SectionHeaderTable + SectionTableSize > base() + Data->getBufferSize())"). Also add the same bounds checking for all the previous mapped structures.