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(a)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(a)redhat.com>
Thanks; tweaked and pushed.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org