+Thu May 22 11:06:29 EST 2008 Daniel P. Berrange <berrange@redhat.com>
+
+ Fix misc memory leaks
+ * qemud/remote.c: Fix memory leaks in stats/migration APIs
+ * src/libvirt.c: Fix use of uninitialized memory & memory
+ leak in default auth helper
+ * src/qparams.c: Fix memory leak, and convert to use new
+ style memory allocation APIs
+
Thu May 22 16:56:12 CEST 2008 Daniel Veillard <veillard@redhat.com>
* docs/formatdomain.html docs/formatdomain.html.in: Anton Protopopov
}
path = args->path;
- if (virDomainBlockStats (dom, path, &stats, sizeof stats) == -1)
+ if (virDomainBlockStats (dom, path, &stats, sizeof stats) == -1) {
+ virDomainFree (dom);
return -1;
+ }
+ virDomainFree (dom);
ret->rd_req = stats.rd_req;
ret->rd_bytes = stats.rd_bytes;
}
path = args->path;
- if (virDomainInterfaceStats (dom, path, &stats, sizeof stats) == -1)
+ if (virDomainInterfaceStats (dom, path, &stats, sizeof stats) == -1) {
+ virDomainFree (dom);
return -1;
+ }
+ virDomainFree (dom);
ret->rx_bytes = stats.rx_bytes;
ret->rx_packets = stats.rx_packets;
r = __virDomainMigratePrepare (client->conn, &cookie, &cookielen,
uri_in, uri_out,
args->flags, dname, args->resource);
- if (r == -1) return -1;
+ if (r == -1) {
+ free(uri_out);
+ return -1;
+ }
/* remoteDispatchClientRequest will free cookie, uri_out and
* the string if there is one.
*/
ret->cookie.cookie_len = cookielen;
ret->cookie.cookie_val = cookie;
- ret->uri_out = *uri_out == NULL ? NULL : uri_out;
+ if (*uri_out == NULL) {
+ ret->uri_out = NULL;
+ free(uri_out);
+ } else {
+ ret->uri_out = uri_out;
+ }
return 0;
}
args->cookie.cookie_len,
args->uri,
args->flags, dname, args->resource);
+ virDomainFree (dom);
if (r == -1) return -1;
return 0;
if (ddom == NULL) return -1;
make_nonnull_domain (&ret->ddom, ddom);
-
+ virDomainFree (ddom);
return 0;
}
return -1;
}
- if (STREQ(bufptr, "") && cred[i].defresult)
- cred[i].result = strdup(cred[i].defresult);
- else
- cred[i].result = strdup(bufptr);
- if (!cred[i].result)
- return -1;
- cred[i].resultlen = strlen(cred[i].result);
+ if (cred[i].type != VIR_CRED_EXTERNAL) {
+ if (STREQ(bufptr, "") && cred[i].defresult)
+ cred[i].result = strdup(cred[i].defresult);
+ else
+ cred[i].result = strdup(bufptr);
+ if (!cred[i].result)
+ return -1;
+ cred[i].resultlen = strlen(cred[i].result);
+ }
}
return 0;
#include <stdarg.h>
#include "buf.h"
-
+#include "memory.h"
#include "qparams.h"
struct qparam_set *
if (init_alloc <= 0) init_alloc = 1;
- ps = malloc (sizeof (*ps));
- if (!ps) return NULL;
+ if (VIR_ALLOC(ps) < 0)
+ return NULL;
ps->n = 0;
ps->alloc = init_alloc;
- ps->p = malloc (init_alloc * sizeof (ps->p[0]));
- if (!ps->p) {
- free (ps);
+ if (VIR_ALLOC_N(ps->p, ps->alloc) < 0) {
+ VIR_FREE (ps);
return NULL;
}
static int
grow_qparam_set (struct qparam_set *ps)
{
- struct qparam *old_p;
-
if (ps->n >= ps->alloc) {
- old_p = ps->p;
- ps->p = realloc (ps->p, 2 * ps->alloc * sizeof (ps->p[0]));
- if (!ps->p) {
- ps->p = old_p;
+ if (VIR_REALLOC_N(ps->p, ps->alloc * 2) < 0) {
perror ("realloc");
return -1;
}
pvalue = strdup (value);
if (!pvalue) {
- free (pname);
+ VIR_FREE (pname);
return -1;
}
if (grow_qparam_set (ps) == -1) {
- free (pname);
- free (pvalue);
+ VIR_FREE (pname);
+ VIR_FREE (pvalue);
return -1;
}
int i;
for (i = 0; i < ps->n; ++i) {
- free (ps->p[i].name);
- free (ps->p[i].value);
+ VIR_FREE (ps->p[i].name);
+ VIR_FREE (ps->p[i].value);
}
- free (ps);
+ VIR_FREE (ps->p);
+ VIR_FREE (ps);
}
struct qparam_set *