[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] python/migration: Update validation logic to understand a v3 stream
commit 9a0749da8fdd62db1724fb855443dfcc8b6cbe6e Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Mon Dec 16 19:39:43 2019 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Fri May 29 17:33:03 2020 +0100 python/migration: Update validation logic to understand a v3 stream Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/python/xen/migration/libxc.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tools/python/xen/migration/libxc.py b/tools/python/xen/migration/libxc.py index d0c4f3527d..5fb51b56ac 100644 --- a/tools/python/xen/migration/libxc.py +++ b/tools/python/xen/migration/libxc.py @@ -119,6 +119,7 @@ class VerifyLibxc(VerifyBase): def __init__(self, info, read): VerifyBase.__init__(self, info, read) + self.version = 0 self.squashed_pagedata_records = 0 @@ -145,9 +146,12 @@ class VerifyLibxc(VerifyBase): raise StreamError("Bad image id: Expected 0x%x, got 0x%x" % (IHDR_IDENT, ident)) - if version != 2: - raise StreamError("Unknown image version: Expected 2, got %d" % - (version, )) + if not (2 <= version <= 3): + raise StreamError( + "Unknown image version: Expected 2 <= ver <= 3, got %d" % + (version, )) + + self.version = version if options & IHDR_OPT_RESZ_MASK: raise StreamError("Reserved bits set in image options field: 0x%x" % @@ -164,7 +168,8 @@ class VerifyLibxc(VerifyBase): "Stream is not native endianess - unable to validate") endian = ["little", "big"][options & IHDR_OPT_LE] - self.info("Libxc Image Header: %s endian" % (endian, )) + self.info("Libxc Image Header: Version %d, %s endian" % + (version, endian)) def verify_dhdr(self): @@ -424,6 +429,16 @@ class VerifyLibxc(VerifyBase): raise RecordError("Found checkpoint dirty pfn list record in stream") + def verify_record_static_data_end(self, content): + """ static data end record """ + + if len(content) != 0: + raise RecordError("End record with non-zero length") + + if self.version < 3: + raise RecordError("Static data end record found in v2 stream") + + record_verifiers = { REC_TYPE_end: VerifyLibxc.verify_record_end, @@ -465,4 +480,7 @@ record_verifiers = { VerifyLibxc.verify_record_checkpoint, REC_TYPE_checkpoint_dirty_pfn_list: VerifyLibxc.verify_record_checkpoint_dirty_pfn_list, + + REC_TYPE_static_data_end: + VerifyLibxc.verify_record_static_data_end, } -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |