From 4dcec65f7cb0db025794eeddedebf4ea5fc81d8e Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Tue, 28 Jul 2015 17:23:56 +0100 Subject: [PATCH] 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 --- tools/libxl/libxlu_pci.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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; } -- 2.39.5