54 lines
1.7 KiB
Diff
54 lines
1.7 KiB
Diff
|
From 99bb0488069bc6ce8deb629b4f5e2cde73160e7b Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
|
||
|
Date: Mon, 3 May 2021 17:11:13 +0200
|
||
|
Subject: [PATCH] libselinux: init_selinux_config(): free resources on error
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Found by Infer.
|
||
|
|
||
|
selinux_config.c:181: error: Resource Leak
|
||
|
resource of type `_IO_FILE` acquired by call to `fopen()` at line 165, column 7 is not released after line 181, column 6.
|
||
|
179. type = strdup(buf_p + sizeof(SELINUXTYPETAG) - 1);
|
||
|
180. if (!type)
|
||
|
181. return;
|
||
|
^
|
||
|
182. end = type + strlen(type) - 1;
|
||
|
183. while ((end > type) &&
|
||
|
|
||
|
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
|
||
|
---
|
||
|
libselinux/src/selinux_config.c | 7 ++++++-
|
||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/libselinux/src/selinux_config.c b/libselinux/src/selinux_config.c
|
||
|
index 6c5238953cb1..97f81a8b61ce 100644
|
||
|
--- a/libselinux/src/selinux_config.c
|
||
|
+++ b/libselinux/src/selinux_config.c
|
||
|
@@ -177,8 +177,11 @@ static void init_selinux_config(void)
|
||
|
if (!strncasecmp(buf_p, SELINUXTYPETAG,
|
||
|
sizeof(SELINUXTYPETAG) - 1)) {
|
||
|
type = strdup(buf_p + sizeof(SELINUXTYPETAG) - 1);
|
||
|
- if (!type)
|
||
|
+ if (!type) {
|
||
|
+ free(line_buf);
|
||
|
+ fclose(fp);
|
||
|
return;
|
||
|
+ }
|
||
|
end = type + strlen(type) - 1;
|
||
|
while ((end > type) &&
|
||
|
(isspace(*end) || iscntrl(*end))) {
|
||
|
@@ -187,6 +190,8 @@ static void init_selinux_config(void)
|
||
|
}
|
||
|
if (setpolicytype(type) != 0) {
|
||
|
free(type);
|
||
|
+ free(line_buf);
|
||
|
+ fclose(fp);
|
||
|
return;
|
||
|
}
|
||
|
free(type);
|
||
|
--
|
||
|
2.32.0.rc1
|
||
|
|