diff options
| author | Daniel Stone <daniels@collabora.com> | 2018-08-24 16:32:42 +0100 |
|---|---|---|
| committer | Daniel Stone <daniels@collabora.com> | 2018-08-29 09:56:39 +0100 |
| commit | a2ed67e85c386413979ab30bf5ec48dc19fcf99e (patch) | |
| tree | 8549349b0e623a8524681a229f1437b8bfe78da3 /src/scanner.c | |
| parent | configure.ac: Reopen master for regular development (diff) | |
| download | wayland-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.c | 2 |
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); } |
