gpt_parser: validate header size
authorArtem Bityutskiy <artem.bityutskiy@intel.com>
Tue, 9 Apr 2013 14:48:25 +0000 (17:48 +0300)
committerArtem Bityutskiy <artem.bityutskiy@intel.com>
Fri, 19 Apr 2013 13:23:19 +0000 (16:23 +0300)
Change-Id: I7cb08dff3421f3390525c0fc4c5188d15ce90e53
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
mic/utils/gpt_parser.py

index 7cf61e5..f2abdb8 100644 (file)
@@ -23,7 +23,7 @@ import uuid
 import binascii
 from mic.utils.errors import MountError
 
-_GPT_HEADER_FORMAT = "<8s4sIIIQQQQ16sQIII420x"
+_GPT_HEADER_FORMAT = "<8s4sIIIQQQQ16sQIII"
 _GPT_ENTRY_FORMAT = "<16s16sQQQ72s"
 _SUPPORTED_GPT_REVISION = '\x00\x00\x01\x00'
 
@@ -94,6 +94,11 @@ class GptParser:
                               (binascii.hexlify(header[1]),
                                binascii.hexlify(_SUPPORTED_GPT_REVISION)))
 
+        # Validate header size
+        if header[2] != struct.calcsize(_GPT_HEADER_FORMAT):
+            raise MountError("Bad GPT header size: %d bytes, expected %d" % \
+                             (header[2], struct.calcsize(_GPT_HEADER_FORMAT)))
+
         return (header[0], # 0. Signature
                 header[1], # 1. Revision
                 header[2], # 2. Header size in bytes