From 99bb0488069bc6ce8deb629b4f5e2cde73160e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= 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 --- 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