checkpolicy/backport-checkpolicy-free-ebitmap-on-error.patch
2025-03-17 17:20:32 +08:00

58 lines
1.4 KiB
Diff

From 8b115c45ad116030d29bb2b84a268e4083d7548c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
Date: Mon, 22 Jan 2024 14:54:56 +0100
Subject: [PATCH] checkpolicy: free ebitmap on error
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
Acked-by: James Carter <jwcart2@gmail.com>
---
policy_define.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/policy_define.c b/policy_define.c
index db7e9d0e..053156df 100644
--- a/policy_define.c
+++ b/policy_define.c
@@ -2524,6 +2524,8 @@ int define_te_avtab_helper(int which, avrule_t ** rule)
int add = 1, ret = 0;
int suppress = 0;
+ ebitmap_init(&tclasses);
+
avrule = (avrule_t *) malloc(sizeof(avrule_t));
if (!avrule) {
yyerror("memory error");
@@ -2570,7 +2572,6 @@ int define_te_avtab_helper(int which, avrule_t ** rule)
}
}
- ebitmap_init(&tclasses);
ret = read_classes(&tclasses);
if (ret)
goto out;
@@ -2647,8 +2648,6 @@ int define_te_avtab_helper(int which, avrule_t ** rule)
free(id);
}
- ebitmap_destroy(&tclasses);
-
avrule->perms = perms;
*rule = avrule;
@@ -2657,6 +2656,9 @@ int define_te_avtab_helper(int which, avrule_t ** rule)
avrule_destroy(avrule);
free(avrule);
}
+
+ ebitmap_destroy(&tclasses);
+
return ret;
}
--
2.33.0