aboutsummaryrefslogtreecommitdiffstats
path: root/src/scanner.c
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2018-08-24 16:32:42 +0100
committerDaniel Stone <daniels@collabora.com>2018-08-29 09:56:39 +0100
commita2ed67e85c386413979ab30bf5ec48dc19fcf99e (patch)
tree8549349b0e623a8524681a229f1437b8bfe78da3 /src/scanner.c
parentconfigure.ac: Reopen master for regular development (diff)
downloadwayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.tar
wayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.tar.gz
wayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.tar.bz2
wayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.tar.lz
wayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.tar.xz
wayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.tar.zst
wayland-a2ed67e85c386413979ab30bf5ec48dc19fcf99e.zip
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 <daniels@collabora.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src/scanner.c')
-rw-r--r--src/scanner.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/scanner.c b/src/scanner.c
index 205c28a..3afc3d3 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);
}