[libvirt] [PATCHv2 7/9] phyp: use consistent return string handling

Eric Blake eblake at redhat.com
Thu Apr 14 20:22:33 UTC 2011


Use the name 'ret' for all phypExec results, to make it easier
to wrap phypExec.  Don't allow a possibly NULL ret through printf.

* src/phyp/phyp_driver.c (phypBuildVolume, phypDestroyStoragePool)
(phypBuildStoragePool, phypBuildLpar): Avoid NULL dereference.
(phypInterfaceDestroy): Avoid redundant free.
(phypVolumeLookupByPath, phypVolumeGetPath): Use consistent
naming.
---
 src/phyp/phyp_driver.c |   37 +++++++++++++++++--------------------
 1 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index 27536eb..56909af 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -2327,7 +2327,7 @@ phypBuildVolume(virConnectPtr conn, const char *lvname, const char *spname,
     ret = phypExec(session, cmd, &exit_status, conn);

     if (exit_status < 0) {
-        VIR_ERROR(_("Unable to create Volume: %s"), ret);
+        VIR_ERROR(_("Unable to create Volume: %s"), NULLSTR(ret));
         goto cleanup;
     }

@@ -2521,7 +2521,7 @@ phypVolumeLookupByPath(virConnectPtr conn, const char *volname)
     int vios_id = phyp_driver->vios_id;
     int exit_status = 0;
     char *cmd = NULL;
-    char *spname = NULL;
+    char *ret = NULL;
     char *char_ptr;
     char *key = NULL;
     virBuffer buf = VIR_BUFFER_INITIALIZER;
@@ -2545,12 +2545,12 @@ phypVolumeLookupByPath(virConnectPtr conn, const char *volname)
     }
     cmd = virBufferContentAndReset(&buf);

-    spname = phypExec(session, cmd, &exit_status, conn);
+    ret = phypExec(session, cmd, &exit_status, conn);

-    if (exit_status < 0 || spname == NULL)
+    if (exit_status < 0 || ret == NULL)
         goto cleanup;

-    char_ptr = strchr(spname, '\n');
+    char_ptr = strchr(ret, '\n');

     if (char_ptr)
         *char_ptr = '\0';
@@ -2560,11 +2560,11 @@ phypVolumeLookupByPath(virConnectPtr conn, const char *volname)
     if (key == NULL)
         goto cleanup;

-    vol = virGetStorageVol(conn, spname, volname, key);
+    vol = virGetStorageVol(conn, ret, volname, key);

 cleanup:
     VIR_FREE(cmd);
-    VIR_FREE(spname);
+    VIR_FREE(ret);
     VIR_FREE(key);

     return vol;
@@ -2725,7 +2725,7 @@ phypVolumeGetPath(virStorageVolPtr vol)
     int vios_id = phyp_driver->vios_id;
     int exit_status = 0;
     char *cmd = NULL;
-    char *sp = NULL;
+    char *ret = NULL;
     char *path = NULL;
     virBuffer buf = VIR_BUFFER_INITIALIZER;
     char *char_ptr;
@@ -2750,33 +2750,32 @@ phypVolumeGetPath(virStorageVolPtr vol)
     }
     cmd = virBufferContentAndReset(&buf);

-    sp = phypExec(session, cmd, &exit_status, conn);
+    ret = phypExec(session, cmd, &exit_status, conn);

-    if (exit_status < 0 || sp == NULL)
+    if (exit_status < 0 || ret == NULL)
         goto cleanup;

-    char_ptr = strchr(sp, '\n');
+    char_ptr = strchr(ret, '\n');

     if (char_ptr)
         *char_ptr = '\0';

-    pv = phypVolumeGetPhysicalVolumeByStoragePool(vol, sp);
+    pv = phypVolumeGetPhysicalVolumeByStoragePool(vol, ret);

     if (!pv)
         goto cleanup;

-    if (virAsprintf(&path, "/%s/%s/%s", pv, sp, vol->name) < 0) {
+    if (virAsprintf(&path, "/%s/%s/%s", pv, ret, vol->name) < 0) {
         virReportOOMError();
         goto cleanup;
     }

 cleanup:
     VIR_FREE(cmd);
-    VIR_FREE(sp);
+    VIR_FREE(ret);
     VIR_FREE(path);

     return path;
-
 }

 static int
@@ -2942,7 +2941,7 @@ phypDestroyStoragePool(virStoragePoolPtr pool)
     ret = phypExec(session, cmd, &exit_status, conn);

     if (exit_status < 0) {
-        VIR_ERROR(_("Unable to destroy Storage Pool: %s"), ret);
+        VIR_ERROR(_("Unable to destroy Storage Pool: %s"), NULLSTR(ret));
         goto cleanup;
     }

@@ -2991,7 +2990,7 @@ phypBuildStoragePool(virConnectPtr conn, virStoragePoolDefPtr def)
     ret = phypExec(session, cmd, &exit_status, conn);

     if (exit_status < 0) {
-        VIR_ERROR(_("Unable to create Storage Pool: %s"), ret);
+        VIR_ERROR(_("Unable to create Storage Pool: %s"), NULLSTR(ret));
         goto cleanup;
     }

@@ -3337,8 +3336,6 @@ phypInterfaceDestroy(virInterfacePtr iface,
     }
     cmd = virBufferContentAndReset(&buf);

-    VIR_FREE(ret);
-
     ret = phypExec(session, cmd, &exit_status, iface->conn);

     if (exit_status < 0 || ret == NULL)
@@ -4311,7 +4308,7 @@ phypBuildLpar(virConnectPtr conn, virDomainDefPtr def)
     ret = phypExec(session, cmd, &exit_status, conn);

     if (exit_status < 0) {
-        VIR_ERROR(_("Unable to create LPAR. Reason: '%s'"), ret);
+        VIR_ERROR(_("Unable to create LPAR. Reason: '%s'"), NULLSTR(ret));
         goto cleanup;
     }

-- 
1.7.4.2




More information about the libvir-list mailing list