aboutsummaryrefslogtreecommitdiffstats
path: root/src/scanner.c
diff options
context:
space:
mode:
authorBryce Harrington <bryce@osg.samsung.com>2015-10-01 18:13:29 -0700
committerDerek Foreman <derekf@osg.samsung.com>2015-10-05 16:47:58 -0500
commite0b2166c9977b0bd1ab2aaff2604f6215f5c48a8 (patch)
tree24acfcbe5e9bc0eaea73ea047e1e99cc78402610 /src/scanner.c
parentContributing: explain Patchwork (diff)
downloadwayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.tar
wayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.tar.gz
wayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.tar.bz2
wayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.tar.lz
wayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.tar.xz
wayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.tar.zst
wayland-e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8.zip
scanner: Close input resource when done to prevent leak
Addresses this error reported by Denis Denisov: [src/scanner.c:1415]: (error) Resource leak: input Signed-off-by: Bryce Harrington <bryce@osg.samsung.com> v2: Also close input for other exit points in main. Signed-off-by: Bryce Harrington <bryce@osg.samsung.com> Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com> Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: David FORT <contact@hardening-consulting.com>
Diffstat (limited to 'src/scanner.c')
-rw-r--r--src/scanner.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/scanner.c b/src/scanner.c
index 9b41ae4..5504fce 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -1531,6 +1531,7 @@ int main(int argc, char *argv[])
if (freopen(argv[2], "w", stdout) == NULL) {
fprintf(stderr, "Could not open output file: %s\n",
strerror(errno));
+ fclose(input);
exit(EXIT_FAILURE);
}
}
@@ -1550,6 +1551,7 @@ int main(int argc, char *argv[])
XML_SetUserData(ctx.parser, &ctx);
if (ctx.parser == NULL) {
fprintf(stderr, "failed to create parser\n");
+ fclose(input);
exit(EXIT_FAILURE);
}
@@ -1561,6 +1563,7 @@ int main(int argc, char *argv[])
len = fread(buf, 1, XML_BUFFER_SIZE, input);
if (len < 0) {
fprintf(stderr, "fread: %m\n");
+ fclose(input);
exit(EXIT_FAILURE);
}
if (XML_ParseBuffer(ctx.parser, len, len == 0) == 0) {
@@ -1569,6 +1572,7 @@ int main(int argc, char *argv[])
XML_GetCurrentLineNumber(ctx.parser),
XML_GetCurrentColumnNumber(ctx.parser),
XML_ErrorString(XML_GetErrorCode(ctx.parser)));
+ fclose(input);
exit(EXIT_FAILURE);
}
} while (len > 0);
@@ -1588,6 +1592,7 @@ int main(int argc, char *argv[])
}
free_protocol(&protocol);
+ fclose(input);
return 0;
}