[libvirt] [PATCH] object: Add sanity check on correct parent class

Eric Blake eblake at redhat.com
Fri Mar 15 16:04:51 UTC 2019


On 3/15/19 10:30 AM, Ján Tomko wrote:
> On Fri, Mar 15, 2019 at 10:12:45AM -0500, Eric Blake wrote:
>> Checking that the derived class is larger than the requested parent
>> class saves us from some obvious mistakes, but as written, it does not
>> catch all the cases; in particular, it is easy to forget to update a
>> VIR_CLASS_NEW when changing the 'parent' member from virObject to
>> virObjectLockabale, but where the size checks don't catch that.  Add a
>> parameter for one more layer of sanity checking.
>>
>> Note that I did NOT change the fact that we require derived classes to
>> be larger (as the difference in size makes it easy to tell classes
>> apart), which means that even if a derived class has no functionality
>> to add (but rather exists for compiler-enforced type-safety), it must
>> still include a dummy member.  But I did fix the wording of the error
>> message to match the code.
>>
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>> ---
>>
>> Here's hoping Coverity doesn't have a false-positive complaint about
>> the error message being a potential dereference of NULL (the only time
>> 'parent == NULL' is when 'parentsize == 0', based on the fact that our
>> syntax checks forbid raw calls to virClassNew() except for "virObject"
>> itself - but Coverity likely won't see that).

Actually, I realized we have sa_assert() for that.

>>
>> src/util/virobject.h | 5 ++++-
>> src/util/virobject.c | 8 +++++---
>> 2 files changed, 9 insertions(+), 4 deletions(-)
>>
> 
> Reviewed-by: Ján Tomko <jtomko at redhat.com>

Thanks; tweaked and pushed.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190315/d552ccf9/attachment-0001.sig>


More information about the libvir-list mailing list