From: kfraser@dhcp93.uk.xensource.com Date: Wed, 14 Jun 2006 12:31:38 +0000 (+0100) Subject: [XENSTAT] Fix two realloc() usage errors in xenstat. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15955^2~10 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e8ef894fec7749bbbf633b361765ce6917e1c1d4;p=xen.git [XENSTAT] Fix two realloc() usage errors in xenstat. Based on original patch from Jimi Xenidis at IBM. Signed-off-by: Keir Fraser --- diff --git a/tools/xenstat/libxenstat/src/xenstat.c b/tools/xenstat/libxenstat/src/xenstat.c index 5f86b13d02..c9060582e7 100644 --- a/tools/xenstat/libxenstat/src/xenstat.c +++ b/tools/xenstat/libxenstat/src/xenstat.c @@ -223,18 +223,20 @@ xenstat_node *xenstat_get_node(xenstat_handle * handle, unsigned int flags) num_domains = 0; do { - xenstat_domain *domain; + xenstat_domain *domain, *tmp; new_domains = xc_domain_getinfolist(handle->xc_handle, num_domains, DOMAIN_CHUNK_SIZE, domaininfo); - node->domains = realloc(node->domains, - (num_domains + new_domains) - * sizeof(xenstat_domain)); - if (node->domains == NULL) { + tmp = realloc(node->domains, + (num_domains + new_domains) + * sizeof(xenstat_domain)); + if (tmp == NULL) { + free(node->domains); free(node); return NULL; } + node->domains = tmp; domain = node->domains + num_domains; @@ -582,11 +584,14 @@ static int xenstat_collect_networks(xenstat_node * node) domain->num_networks = 1; domain->networks = malloc(sizeof(xenstat_network)); } else { + struct xenstat_network *tmp; domain->num_networks++; - domain->networks = - realloc(domain->networks, - domain->num_networks * - sizeof(xenstat_network)); + tmp = realloc(domain->networks, + domain->num_networks * + sizeof(xenstat_network)); + if (tmp == NULL) + free(domain->networks); + domain->networks = tmp; } if (domain->networks == NULL) return 0;