From 7b88f59ce4aab4d667ae26b766f95db711ba4059 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 29 May 2007 13:55:19 +0000 Subject: [PATCH] * src/virsh.c src/xen_internal.c src/xend_internal.c: memory leaks fixed by a patch from Masayuki Sunou Daniel --- ChangeLog | 5 +++++ src/virsh.c | 4 +++- src/xen_internal.c | 4 ++++ src/xend_internal.c | 7 +++++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index af5615f406..ba95e9b10d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue May 29 15:54:17 CEST 2007 Daniel Veillard + + * src/virsh.c src/xen_internal.c src/xend_internal.c: memory leaks + fixed by a patch from Masayuki Sunou + Wed May 23 16:07:00 BST 2007 Richard W.M. Jones * src/virsh.c: Add attach-device and detach-device commands to diff --git a/src/virsh.c b/src/virsh.c index 3986e6fb8c..5725b502e4 100644 --- a/src/virsh.c +++ b/src/virsh.c @@ -3153,8 +3153,10 @@ vshCommandParse(vshControl * ctl, char *cmdstr) c->def = cmd; c->next = NULL; - if (!vshCommandCheckOpts(ctl, c)) + if (!vshCommandCheckOpts(ctl, c)) { + if(c) free(c); goto syntaxError; + } if (!ctl->cmd) ctl->cmd = c; diff --git a/src/xen_internal.c b/src/xen_internal.c index fe6aeff526..b2ce2bf9ab 100644 --- a/src/xen_internal.c +++ b/src/xen_internal.c @@ -1497,11 +1497,15 @@ xenHypervisorInit(void) virXenError(VIR_ERR_XEN_CALL, " ioctl ", IOCTL_PRIVCMD_HYPERCALL); close(fd); in_init = 0; + if (ipt) + free(ipt); return(-1); done: close(fd); in_init = 0; + if (ipt) + free(ipt); return(0); } diff --git a/src/xend_internal.c b/src/xend_internal.c index 136b535de7..2e35e08842 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -3072,7 +3072,7 @@ xenDaemonCreateLinux(virConnectPtr conn, const char *xmlDesc, static int xenDaemonAttachDevice(virDomainPtr domain, char *xml) { - char *sexpr, *conf; + char *sexpr, *conf, *str; int hvm = 0, ret; xenUnifiedPrivatePtr priv; @@ -3084,8 +3084,11 @@ xenDaemonAttachDevice(virDomainPtr domain, char *xml) priv = (xenUnifiedPrivatePtr) domain->conn->privateData; - if (strcmp(virDomainGetOSType(domain), "linux")) + str = virDomainGetOSType(domain); + if (strcmp(str, "linux")) hvm = 1; + if (str) + free(str); sexpr = virParseXMLDevice(domain->conn, xml, hvm, priv->xendConfigVersion); if (sexpr == NULL) return (-1);