|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] 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#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |