mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Fix misc memory leaks
This commit is contained in:
parent
8e5c89ba64
commit
dd674689df
@ -1,3 +1,12 @@
|
|||||||
|
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>
|
Thu May 22 16:56:12 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
* docs/formatdomain.html docs/formatdomain.html.in: Anton Protopopov
|
* docs/formatdomain.html docs/formatdomain.html.in: Anton Protopopov
|
||||||
|
@ -792,8 +792,11 @@ remoteDispatchDomainBlockStats (struct qemud_server *server ATTRIBUTE_UNUSED,
|
|||||||
}
|
}
|
||||||
path = args->path;
|
path = args->path;
|
||||||
|
|
||||||
if (virDomainBlockStats (dom, path, &stats, sizeof stats) == -1)
|
if (virDomainBlockStats (dom, path, &stats, sizeof stats) == -1) {
|
||||||
|
virDomainFree (dom);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
virDomainFree (dom);
|
||||||
|
|
||||||
ret->rd_req = stats.rd_req;
|
ret->rd_req = stats.rd_req;
|
||||||
ret->rd_bytes = stats.rd_bytes;
|
ret->rd_bytes = stats.rd_bytes;
|
||||||
@ -823,8 +826,11 @@ remoteDispatchDomainInterfaceStats (struct qemud_server *server ATTRIBUTE_UNUSED
|
|||||||
}
|
}
|
||||||
path = args->path;
|
path = args->path;
|
||||||
|
|
||||||
if (virDomainInterfaceStats (dom, path, &stats, sizeof stats) == -1)
|
if (virDomainInterfaceStats (dom, path, &stats, sizeof stats) == -1) {
|
||||||
|
virDomainFree (dom);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
virDomainFree (dom);
|
||||||
|
|
||||||
ret->rx_bytes = stats.rx_bytes;
|
ret->rx_bytes = stats.rx_bytes;
|
||||||
ret->rx_packets = stats.rx_packets;
|
ret->rx_packets = stats.rx_packets;
|
||||||
@ -1221,14 +1227,22 @@ remoteDispatchDomainMigratePrepare (struct qemud_server *server ATTRIBUTE_UNUSED
|
|||||||
r = __virDomainMigratePrepare (client->conn, &cookie, &cookielen,
|
r = __virDomainMigratePrepare (client->conn, &cookie, &cookielen,
|
||||||
uri_in, uri_out,
|
uri_in, uri_out,
|
||||||
args->flags, dname, args->resource);
|
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
|
/* remoteDispatchClientRequest will free cookie, uri_out and
|
||||||
* the string if there is one.
|
* the string if there is one.
|
||||||
*/
|
*/
|
||||||
ret->cookie.cookie_len = cookielen;
|
ret->cookie.cookie_len = cookielen;
|
||||||
ret->cookie.cookie_val = cookie;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1258,6 +1272,7 @@ remoteDispatchDomainMigratePerform (struct qemud_server *server ATTRIBUTE_UNUSED
|
|||||||
args->cookie.cookie_len,
|
args->cookie.cookie_len,
|
||||||
args->uri,
|
args->uri,
|
||||||
args->flags, dname, args->resource);
|
args->flags, dname, args->resource);
|
||||||
|
virDomainFree (dom);
|
||||||
if (r == -1) return -1;
|
if (r == -1) return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1281,7 +1296,7 @@ remoteDispatchDomainMigrateFinish (struct qemud_server *server ATTRIBUTE_UNUSED,
|
|||||||
if (ddom == NULL) return -1;
|
if (ddom == NULL) return -1;
|
||||||
|
|
||||||
make_nonnull_domain (&ret->ddom, ddom);
|
make_nonnull_domain (&ret->ddom, ddom);
|
||||||
|
virDomainFree (ddom);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,6 +170,7 @@ static int virConnectAuthCallbackDefault(virConnectCredentialPtr cred,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cred[i].type != VIR_CRED_EXTERNAL) {
|
||||||
if (STREQ(bufptr, "") && cred[i].defresult)
|
if (STREQ(bufptr, "") && cred[i].defresult)
|
||||||
cred[i].result = strdup(cred[i].defresult);
|
cred[i].result = strdup(cred[i].defresult);
|
||||||
else
|
else
|
||||||
@ -178,6 +179,7 @@ static int virConnectAuthCallbackDefault(virConnectCredentialPtr cred,
|
|||||||
return -1;
|
return -1;
|
||||||
cred[i].resultlen = strlen(cred[i].result);
|
cred[i].resultlen = strlen(cred[i].result);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include "buf.h"
|
#include "buf.h"
|
||||||
|
#include "memory.h"
|
||||||
#include "qparams.h"
|
#include "qparams.h"
|
||||||
|
|
||||||
struct qparam_set *
|
struct qparam_set *
|
||||||
@ -39,13 +39,12 @@ new_qparam_set (int init_alloc, ...)
|
|||||||
|
|
||||||
if (init_alloc <= 0) init_alloc = 1;
|
if (init_alloc <= 0) init_alloc = 1;
|
||||||
|
|
||||||
ps = malloc (sizeof (*ps));
|
if (VIR_ALLOC(ps) < 0)
|
||||||
if (!ps) return NULL;
|
return NULL;
|
||||||
ps->n = 0;
|
ps->n = 0;
|
||||||
ps->alloc = init_alloc;
|
ps->alloc = init_alloc;
|
||||||
ps->p = malloc (init_alloc * sizeof (ps->p[0]));
|
if (VIR_ALLOC_N(ps->p, ps->alloc) < 0) {
|
||||||
if (!ps->p) {
|
VIR_FREE (ps);
|
||||||
free (ps);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,13 +86,8 @@ append_qparams (struct qparam_set *ps, ...)
|
|||||||
static int
|
static int
|
||||||
grow_qparam_set (struct qparam_set *ps)
|
grow_qparam_set (struct qparam_set *ps)
|
||||||
{
|
{
|
||||||
struct qparam *old_p;
|
|
||||||
|
|
||||||
if (ps->n >= ps->alloc) {
|
if (ps->n >= ps->alloc) {
|
||||||
old_p = ps->p;
|
if (VIR_REALLOC_N(ps->p, ps->alloc * 2) < 0) {
|
||||||
ps->p = realloc (ps->p, 2 * ps->alloc * sizeof (ps->p[0]));
|
|
||||||
if (!ps->p) {
|
|
||||||
ps->p = old_p;
|
|
||||||
perror ("realloc");
|
perror ("realloc");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -115,13 +109,13 @@ append_qparam (struct qparam_set *ps,
|
|||||||
|
|
||||||
pvalue = strdup (value);
|
pvalue = strdup (value);
|
||||||
if (!pvalue) {
|
if (!pvalue) {
|
||||||
free (pname);
|
VIR_FREE (pname);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (grow_qparam_set (ps) == -1) {
|
if (grow_qparam_set (ps) == -1) {
|
||||||
free (pname);
|
VIR_FREE (pname);
|
||||||
free (pvalue);
|
VIR_FREE (pvalue);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,10 +155,11 @@ free_qparam_set (struct qparam_set *ps)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < ps->n; ++i) {
|
for (i = 0; i < ps->n; ++i) {
|
||||||
free (ps->p[i].name);
|
VIR_FREE (ps->p[i].name);
|
||||||
free (ps->p[i].value);
|
VIR_FREE (ps->p[i].value);
|
||||||
}
|
}
|
||||||
free (ps);
|
VIR_FREE (ps->p);
|
||||||
|
VIR_FREE (ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct qparam_set *
|
struct qparam_set *
|
||||||
|
Loading…
x
Reference in New Issue
Block a user