[libvirt] [PATCH v3 4/5] virobject: Check if @parent is the first member in class

Michal Privoznik mprivozn at redhat.com
Tue Apr 17 16:01:05 UTC 2018


Our virObject code relies heavily on the fact that the first
member of the class struct is type of virObject (or some
derivation of if). Let's check for that.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/util/virobject.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/util/virobject.h b/src/util/virobject.h
index ed1a117b09..77ebad1e8b 100644
--- a/src/util/virobject.h
+++ b/src/util/virobject.h
@@ -76,7 +76,8 @@ virClassPtr virClassForObjectRWLockable(void);
 # endif
 
 # define VIR_CLASS_NEW(name, prnt) \
-    (name##Class = virClassNew(prnt, #name, sizeof(name), name##Dispose))
+    verify_expr(offsetof(name, parent) == 0, \
+      (name##Class = virClassNew(prnt, #name, sizeof(name), name##Dispose)))
 
 virClassPtr
 virClassNew(virClassPtr parent,
-- 
2.16.1




More information about the libvir-list mailing list