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

Daniel Veillard veillard at redhat.com
Fri Nov 6 10:44:04 UTC 2009


On Fri, Nov 06, 2009 at 04:28:04AM +0100, Matthias Bolte wrote:
> ---
>  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;

  ACK, also includes other cleanups !

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list