[libvirt] [PATCH] build: add compiler attributes to virUUIDParse

Daniel P. Berrange berrange at redhat.com
Fri Oct 14 08:44:17 UTC 2011


On Thu, Oct 13, 2011 at 12:24:02PM -0600, Eric Blake wrote:
> On 10/13/2011 02:55 AM, Daniel Veillard wrote:
> >On Wed, Oct 12, 2011 at 05:27:40PM -0600, Eric Blake wrote:
> >>Coverity complained that most, but not all, clients of virUUIDParse
> >>were checking for errors.  Silence those coverity warnings by
> >>explicitly marking the cases where we trust the input, and fixing
> >>one instance that really should have been checking.  In particular,
> >>this silences about half of the 46 warnings I saw on my most
> >>recent Coverity analysis run.
> >>
> 
> >>@@ -129,9 +129,6 @@ virUUIDParse(const char *uuidstr, unsigned char *uuid) {
> >>      const char *cur;
> >>      int i;
> >>
> >>-    if ((uuidstr == NULL) || (uuid == NULL))
> >>-        return(-1);
> >>-
> >
> >   ACK, but I'm always a bit  distressed at the idea that a perfectly
> >   valid runtime check is being replaced by a static one which is
> >   compiler specific. Can we keep this chunk without Coverity complaining ?
> 
> Unfortunately, no.  Keeping this code will make Coverity warn about
> dead code (the ATTRIBUTE_NONNULL implies that the check for NULL
> will always fail).  All callers were already passing valid pointers;
> directly passing NULL will make gcc warn, and there's an open BZ
> against gcc to make it someday do the same analysis as Coverity to
> warn about any other obvious passing of NULL.  But in spite of gcc's
> weakness, both clang and coverity catch a lot more cases of passing
> unintentional NULL, and get run frequently enough that I'm not too
> worried about dropping the argument check (it's an internal
> function, so we should be calling it correctly in the first place).

Also note that if you have ATTRIBUTE_NONNULL, then GCC will actually
*remove* those two lines during optimization phase anyway. So by
leaving them you are giving yourself a misleading view of reality.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list