[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl: do not leak front flexarray on error in libxl_create_pci_backend
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1294769738 0 # Node ID ee3a97548604d89a5cb64747d7e06230751da975 # Parent 76ad4bb4c583529199c761c65f13031c7f3fa29e libxl: do not leak front flexarray on error in libxl_create_pci_backend Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/libxl/libxl_pci.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) diff -r 76ad4bb4c583 -r ee3a97548604 tools/libxl/libxl_pci.c --- a/tools/libxl/libxl_pci.c Tue Jan 11 18:15:18 2011 +0000 +++ b/tools/libxl/libxl_pci.c Tue Jan 11 18:15:38 2011 +0000 @@ -224,17 +224,19 @@ static int libxl_create_pci_backend(libx static int libxl_create_pci_backend(libxl__gc *gc, uint32_t domid, libxl_device_pci *pcidev, int num) { libxl_ctx *ctx = libxl__gc_owner(gc); - flexarray_t *front; - flexarray_t *back; + flexarray_t *front = NULL; + flexarray_t *back = NULL; libxl__device device; - int i; + int ret = ERROR_NOMEM, i; front = flexarray_make(16, 1); if (!front) - return ERROR_NOMEM; + goto out; back = flexarray_make(16, 1); if (!back) - return ERROR_NOMEM; + goto out; + + ret = 0; LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Creating pci backend"); @@ -271,8 +273,11 @@ static int libxl_create_pci_backend(libx libxl__xs_kvs_of_flexarray(gc, back, back->count), libxl__xs_kvs_of_flexarray(gc, front, front->count)); - flexarray_free(back); - flexarray_free(front); +out: + if (back) + flexarray_free(back); + if (front) + flexarray_free(front); return 0; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |