mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-24 13:35:17 +00:00
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 (cherry picked from commit 5075248ac9e60dd73da3487f83be9aa188200688)
This commit is contained in:
parent
b9bc69ba28
commit
522656bea1
@ -3048,6 +3048,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)))
|
||||||
@ -3090,6 +3092,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++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3189,6 +3193,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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user