[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