diff options
| author | Bryce Harrington <bryce@osg.samsung.com> | 2015-10-01 18:13:29 -0700 |
|---|---|---|
| committer | Derek Foreman <derekf@osg.samsung.com> | 2015-10-05 16:47:58 -0500 |
| commit | e0b2166c9977b0bd1ab2aaff2604f6215f5c48a8 (patch) | |
| tree | 24acfcbe5e9bc0eaea73ea047e1e99cc78402610 /src/scanner.c | |
| parent | Contributing: explain Patchwork (diff) | |
| download | wayland-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.c | 5 |
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; } |
