]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Enforce return check on virAsprintf() calls
authorJohn Ferlan <jferlan@redhat.com>
Wed, 30 Jan 2013 20:43:39 +0000 (15:43 -0500)
committerEric Blake <eblake@redhat.com>
Wed, 30 Jan 2013 21:42:22 +0000 (14:42 -0700)
Way back when I started making changes for Coverity messages my first set
were to a bunch of CHECKED_RETURN errors.  In particular virAsprintf() had
a few callers that Coverity noted didn't check their return (although some
did check if the buffer being printed to was NULL or not).

It was suggested at the time as a further patch an ATTRIBUTE_RETURN_CHECK
should be added to virAsprintf(), see:

https://www.redhat.com/archives/libvir-list/2013-January/msg00120.html

This patch does that and fixes a few more instances not found by Coverity
that failed the check.

src/util/virerror.c
src/util/virutil.h
src/xen/xend_internal.c
tests/networkxml2conftest.c
tools/virsh-domain.c

index 500c32bcb3c94e7f127e403e7b0cda2db10297b6..301a1aca59d80ff4673b0546610d7e2f4ca7b691 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * virerror.c: error handling and reporting code for libvirt
  *
- * Copyright (C) 2006, 2008-2012 Red Hat, Inc.
+ * Copyright (C) 2006, 2008-2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -647,7 +647,7 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED,
     } else {
         va_list ap;
         va_start(ap, fmt);
-        virVasprintf(&str, fmt, ap);
+        ignore_value(virVasprintf(&str, fmt, ap));
         va_end(ap);
     }
 
index 5a08c8138b898831a78785ff2f1696d8df72c43d..4201aa10a9493dd1c975ed2ec5eb93777bfd9631 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * virutil.h: common, generic utility functions
  *
- * Copyright (C) 2010-2012 Red Hat, Inc.
+ * Copyright (C) 2010-2013 Red Hat, Inc.
  * Copyright (C) 2006, 2007 Binary Karma
  * Copyright (C) 2006 Shuveb Hussain
  *
@@ -200,9 +200,11 @@ int virParseNumber(const char **str);
 int virParseVersionString(const char *str, unsigned long *version,
                           bool allowMissing);
 int virAsprintf(char **strp, const char *fmt, ...)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_FMT_PRINTF(2, 3);
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_FMT_PRINTF(2, 3)
+    ATTRIBUTE_RETURN_CHECK;
 int virVasprintf(char **strp, const char *fmt, va_list list)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_FMT_PRINTF(2, 0);
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_FMT_PRINTF(2, 0)
+    ATTRIBUTE_RETURN_CHECK;
 char *virStrncpy(char *dest, const char *src, size_t n, size_t destbytes)
     ATTRIBUTE_RETURN_CHECK;
 char *virStrcpy(char *dest, const char *src, size_t destbytes)
index b03b7bcb3c3390f8ff851d0fc32205b500ff864a..3036cbbae56d27096cd537a2ea10f33f2ec737d6 100644 (file)
@@ -2738,10 +2738,8 @@ xenDaemonAttachDeviceFlags(virDomainPtr domain, const char *xml,
             virDevicePCIAddress PCIAddr;
 
             PCIAddr = dev->data.hostdev->source.subsys.u.pci;
-            virAsprintf(&target, "PCI device: %.4x:%.2x:%.2x", PCIAddr.domain,
-                                 PCIAddr.bus, PCIAddr.slot);
-
-            if (target == NULL) {
+            if (virAsprintf(&target, "PCI device: %.4x:%.2x:%.2x",
+                            PCIAddr.domain, PCIAddr.bus, PCIAddr.slot) < 0) {
                 virReportOOMError();
                 goto cleanup;
             }
index 397954089ebdf5525ba6668c1d1254a585248f41..88016ee1195b3cbab7dc7b82dfebb1b76adda71d 100644 (file)
@@ -102,9 +102,8 @@ testDnsmasqLeaseFileName(const char *netname)
 {
     char *leasefile;
 
-    virAsprintf(&leasefile, "/var/lib/libvirt/dnsmasq/%s.leases",
-                netname);
-
+    ignore_value(virAsprintf(&leasefile, "/var/lib/libvirt/dnsmasq/%s.leases",
+                             netname));
     return leasefile;
 }
 
index 004fac473462fc90e99b79e42374ed3b8eee868f..151b3494f05a629f151b2bf52258a42a2f8e8e64 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * virsh-domain.c: Commands to manage domain
  *
- * Copyright (C) 2005, 2007-2012 Red Hat, Inc.
+ * Copyright (C) 2005, 2007-2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -9011,8 +9011,7 @@ vshCompleteXMLFromDomain(vshControl *ctl, virDomainPtr dom, char *oldXML,
     }
 
     /* Get all possible devices */
-    virAsprintf(&xpath, "/domain/devices/%s", node->name);
-    if (!xpath) {
+    if (virAsprintf(&xpath, "/domain/devices/%s", node->name) < 0) {
         virReportOOMError();
         goto cleanup;
     }