[PATCH] mdev: add NULL-checks in clean_up_cur_rule()

Maks Mishin maks.mishinfz at gmail.com
Mon Aug 19 15:23:20 UTC 2024


The function clean_up_cur_rule() calls in the loop, which can lead to
double-free of pointers `G.cur_rule.envvar` and `G.cur_rule.ren_mov`.
Added NULL checks and NULL assignment after free for correct checks.

Signed-off-by: Maks Mishin <maks.mishinFZ at gmail.com>
---
 util-linux/mdev.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index e98d46743..4632e0d18 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -335,8 +335,15 @@ static void clean_up_cur_rule(void)
 {
 	struct envmatch *e;
 
-	free(G.cur_rule.envvar);
-	free(G.cur_rule.ren_mov);
+	if (G.cur_rule.envvar != NULL) {
+		free(G.cur_rule.envvar);
+		G.cur_rule.envvar = NULL;
+	}
+	if (G.cur_rule.ren_mov != NULL) {
+		free(G.cur_rule.ren_mov);
+		G.cur_rule.ren_mov = NULL;
+	}
+
 	if (G.cur_rule.regex_compiled)
 		regfree(&G.cur_rule.match);
 	IF_FEATURE_MDEV_EXEC(free(G.cur_rule.r_cmd);)
-- 
2.30.2



More information about the busybox mailing list