On 06/16/2010 02:47 PM, Eric Blake wrote: > On 06/16/2010 01:22 PM, Eduardo Otubo wrote: >> Fixing all pointed in the previous email. >> Thanks for all the comments. >> >> @@ -488,11 +498,45 @@ phypExec(LIBSSH2_SESSION * session, char *cmd, int *exit_status, >> return virBufferContentAndReset(&tex_ret); >> } >> >> +static char * >> +hmc_helper(int system_type, const char *managed_system) >> +{ >> + char *unsafe = NULL; >> + if (system_type == HMC) >> + virAsprintf(&unsafe, "-m %s", managed_system); >> + else >> + unsafe[0] = 0; >> + return unsafe; > > Unfortunately, for the IVM case, this dereferences NULL :( > > And it has the problem that it is not thread-safe. > > I'm going to try my hand at tweaking this patch to use virBuffer > instead, but we are getting closer... Here's what I'm thinking, at which point we don't need hmc_helper after all: diff --git i/src/phyp/phyp_driver.c w/src/phyp/phyp_driver.c index e111a47..1aea417 100644 --- i/src/phyp/phyp_driver.c +++ w/src/phyp/phyp_driver.c @@ -542,13 +542,18 @@ phypGetLparID(LIBSSH2_SESSION * session, const char *managed_system, char *char_ptr; char *cmd = NULL; char *ret = NULL; + virBuffer buf = VIR_BUFFER_INITIALIZER; - if (virAsprintf(&cmd, - "lssyscfg -r lpar %s --filter lpar_names=%s -F lpar_id", - hmc_helper(system_type, managed_system), name) < 0) { + virBufferAddLit(&buf, "lssyscfg -r lpar"); + if (system_type == HMC) + virBufferVSprintf(&buf, " -m %s", managed_system); + virBufferVSprintf(&buf, " --filter lpar_names=%s -F lpar_id", name); + if (virBufferError(&buf)) { + virBufferFreeAndReset(&buf); virReportOOMError(); - goto err; + return -1; } + cmd = virBufferContentAndReset(&buf); ret = phypExec(session, cmd, &exit_status, conn); -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list