From: Wei Liu Date: Tue, 28 Jul 2015 16:23:56 +0000 (+0100) Subject: libxlu: properly free buffer in PCI related functions X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~2663 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4dcec65f7cb0db025794eeddedebf4ea5fc81d8e;p=xen.git libxlu: properly free buffer in PCI related functions Free buffer in both success and failure paths. Signed-off-by: Wei Liu Acked-by: Ian Campbell --- diff --git a/tools/libxl/libxlu_pci.c b/tools/libxl/libxlu_pci.c index 026413bc16..2cd793d223 100644 --- a/tools/libxl/libxlu_pci.c +++ b/tools/libxl/libxlu_pci.c @@ -167,17 +167,18 @@ int xlu_pci_parse_bdf(XLU_Config *cfg, libxl_device_pci *pcidev, const char *str } } - free(buf2); - if ( tok != ptr || state != STATE_TERMINAL ) goto parse_error; /* Just a pretty way to fill in the values */ pcidev_struct_fill(pcidev, dom, bus, dev, func, vslot << 3); + free(buf2); + return 0; parse_error: + free(buf2); return ERROR_INVAL; } @@ -246,14 +247,15 @@ int xlu_rdm_parse(XLU_Config *cfg, libxl_rdm_reserve *rdm, const char *str) } } - free(buf2); - if (tok != ptr || state != STATE_TERMINAL) goto parse_error; + free(buf2); + return 0; parse_error: + free(buf2); return ERROR_INVAL; }