For consistency with fields(), validate the value (at least to some extent)
before passing it to C.

Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
---
 rust/migration/src/vmstate.rs | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/rust/migration/src/vmstate.rs b/rust/migration/src/vmstate.rs
index a6ee7e93853..6b0f96c4da8 100644
--- a/rust/migration/src/vmstate.rs
+++ b/rust/migration/src/vmstate.rs
@@ -675,6 +675,9 @@ pub const fn fields(mut self, fields: &'static 
[VMStateField]) -> Self {
 
     #[must_use]
     pub const fn subsections(mut self, subs: &'static VMStateSubsections) -> 
Self {
+        if subs[subs.len() - 1].is_some() {
+            panic!("subsections are not terminated, use vmstate_subsections!");
+        }
         let subs: *const Option<&bindings::VMStateDescription> = subs.as_ptr();
         self.0.subsections = subs.cast::<*const 
bindings::VMStateDescription>();
         self
-- 
2.51.0


Reply via email to