virsh-domain: Fix memleak in cmdUndefine with storage

When undefining a domain with storage when the volume isn't managed by
libvirt the name and path strings weren't freed properly.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=996050
This commit is contained in:
Peter Krempa 2013-08-12 16:09:53 +02:00
parent 9ceaaa08e9
commit 5075248ac9

View File

@ -3052,6 +3052,8 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd)
for (i = 0; i < nvolumes; i++) { for (i = 0; i < nvolumes; i++) {
ctxt->node = vol_nodes[i]; ctxt->node = vol_nodes[i];
VIR_FREE(source);
VIR_FREE(target);
/* get volume source and target paths */ /* get volume source and target paths */
if (!(target = virXPathString("string(./target/@dev)", ctxt))) if (!(target = virXPathString("string(./target/@dev)", ctxt)))
@ -3094,6 +3096,8 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd)
} }
vlist[nvols].source = source; vlist[nvols].source = source;
vlist[nvols].target = target; vlist[nvols].target = target;
source = NULL;
target = NULL;
nvols++; nvols++;
} }
@ -3193,6 +3197,8 @@ out:
} }
cleanup: cleanup:
VIR_FREE(source);
VIR_FREE(target);
for (i = 0; i < nvols; i++) { for (i = 0; i < nvols; i++) {
VIR_FREE(vlist[i].source); VIR_FREE(vlist[i].source);
VIR_FREE(vlist[i].target); VIR_FREE(vlist[i].target);