[libvirt] [PATCH 6/9] phyp: Check for exit_status < 0 before parsing the result

Matthias Bolte matthias.bolte at googlemail.com
Fri Nov 6 03:28:04 UTC 2009


---
 src/phyp/phyp_driver.c |   35 ++++++++++++-----------------------
 1 files changed, 12 insertions(+), 23 deletions(-)

diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index ab5af17..1529c24 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -508,7 +508,7 @@ phypGetLparNAME(LIBSSH2_SESSION * session, const char *managed_system,
 
     ret = phypExec(session, cmd, &exit_status, conn);
 
-    if (ret == NULL)
+    if (exit_status < 0 || ret == NULL)
         goto err;
 
     char *char_ptr = strchr(ret, '\n');
@@ -516,9 +516,6 @@ phypGetLparNAME(LIBSSH2_SESSION * session, const char *managed_system,
     if (char_ptr)
         *char_ptr = '\0';
 
-    if (exit_status < 0 || ret == NULL)
-        goto err;
-
     VIR_FREE(cmd);
     return ret;
 
@@ -593,16 +590,13 @@ phypGetLparMem(virConnectPtr conn, const char *managed_system, int lpar_id,
 
     ret = phypExec(session, cmd, &exit_status, conn);
 
-    if (ret == NULL)
+    if (exit_status < 0 || ret == NULL)
         goto err;
 
-    char *mem_char_ptr = strchr(ret, '\n');
-
-    if (mem_char_ptr)
-        *mem_char_ptr = '\0';
+    char_ptr = strchr(ret, '\n');
 
-    if (exit_status < 0)
-        goto err;
+    if (char_ptr)
+        *char_ptr = '\0';
 
     if (virStrToLong_i(ret, &char_ptr, 10, &memory) == -1)
         goto err;
@@ -641,6 +635,7 @@ phypGetLparCPUGeneric(virConnectPtr conn, const char *managed_system,
     LIBSSH2_SESSION *session = connection_data->session;
     char *cmd = NULL;
     char *ret = NULL;
+    char *char_ptr;
     int exit_status = 0;
     int vcpus = 0;
 
@@ -663,10 +658,10 @@ phypGetLparCPUGeneric(virConnectPtr conn, const char *managed_system,
     }
     ret = phypExec(session, cmd, &exit_status, conn);
 
-    if (ret == NULL)
+    if (exit_status < 0 || ret == NULL)
         goto err;
 
-    char *char_ptr = strchr(ret, '\n');
+    char_ptr = strchr(ret, '\n');
 
     if (char_ptr)
         *char_ptr = '\0';
@@ -674,9 +669,6 @@ phypGetLparCPUGeneric(virConnectPtr conn, const char *managed_system,
     if (virStrToLong_i(ret, &char_ptr, 10, &vcpus) == -1)
         goto err;
 
-    if (exit_status < 0)
-        goto err;
-
     VIR_FREE(cmd);
     VIR_FREE(ret);
     return (unsigned long) vcpus;
@@ -708,16 +700,13 @@ phypGetRemoteSlot(virConnectPtr conn, const char *managed_system,
     }
     ret = phypExec(session, cmd, &exit_status, conn);
 
-    if (ret == NULL)
+    if (exit_status < 0 || ret == NULL)
         goto err;
 
-    char *char_ptr2 = strchr(ret, '\n');
-
-    if (char_ptr2)
-        *char_ptr2 = '\0';
+    char_ptr = strchr(ret, '\n');
 
-    if (exit_status < 0)
-        goto err;
+    if (char_ptr)
+        *char_ptr = '\0';
 
     if (virStrToLong_i(ret, &char_ptr, 10, &remote_slot) == -1)
         goto err;
-- 
1.6.0.4




More information about the libvir-list mailing list