From a2ed67e85c386413979ab30bf5ec48dc19fcf99e Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 24 Aug 2018 16:32:42 +0100 Subject: [PATCH] scanner: Plug two memory leaks Found with both ASan leak sanitizer and Valgrind. We were trivially leaking the enum name for every arg parsed by the scanner which had one. If libxml-based DTD validation was enabled, we would also leak the DTD itself, despite diligently freeing the document, context, etc. Signed-off-by: Daniel Stone Reviewed-by: Pekka Paalanen Reviewed-by: Peter Hutterer --- src/scanner.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scanner.c b/src/scanner.c index 205c28a9..3afc3d3d 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -133,6 +133,7 @@ is_dtd_valid(FILE *input, const char *filename) rc = xmlValidateDtd(dtdctx, doc, dtd); xmlFreeDoc(doc); xmlFreeParserCtxt(ctx); + xmlFreeDtd(dtd); xmlFreeValidCtxt(dtdctx); /* xmlIOParseDTD consumes buffer */ @@ -432,6 +433,7 @@ free_arg(struct arg *arg) free(arg->name); free(arg->interface_name); free(arg->summary); + free(arg->enumeration_name); free(arg); }