35 lines
1.0 KiB
Diff
35 lines
1.0 KiB
Diff
From 58acebb85887cb25d729ac9cab51e63a8f5b7918 Mon Sep 17 00:00:00 2001
|
|
From: luhuaxin <1539327763@qq.com>
|
|
Date: Wed, 9 Jun 2021 21:32:32 +0800
|
|
Subject: [PATCH] libsemanage: Fix use after free in parse_module_store
|
|
|
|
The passed arg will be freed after this function call.
|
|
|
|
Signed-off-by: luhuaxin <1539327763@qq.com>
|
|
---
|
|
src/conf-parse.y | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/conf-parse.y b/src/conf-parse.y
|
|
index 9bf9364..eac9134 100644
|
|
--- a/src/conf-parse.y
|
|
+++ b/src/conf-parse.y
|
|
@@ -516,12 +516,12 @@ static int parse_module_store(char *arg)
|
|
char *s;
|
|
current_conf->store_type = SEMANAGE_CON_POLSERV_REMOTE;
|
|
if ((s = strchr(arg, ':')) == NULL) {
|
|
- current_conf->store_path = arg;
|
|
+ current_conf->store_path = strdup(arg);
|
|
current_conf->server_port = 4242;
|
|
} else {
|
|
char *endptr;
|
|
*s = '\0';
|
|
- current_conf->store_path = arg;
|
|
+ current_conf->store_path = strdup(arg);
|
|
current_conf->server_port = strtol(s + 1, &endptr, 10);
|
|
if (*(s + 1) == '\0' || *endptr != '\0') {
|
|
return -2;
|
|
--
|
|
1.8.3.1
|
|
|