[pseudo][PATCH v2 16/23] pseudo_util: Avoid accidental free calls for without_libpseudo()

Mark Hatle <[email protected]> Fri, 3 Jul 2026 13:40:48 -0500
Newsgroups org.yoctoproject.lists.yocto-patches
Message-ID <1783104055-19005-17-git-send-email-mark.hatle@kernel.crashing.org>
From: Richard Purdie <[email protected]>

We need to return list after the strdup otherwise the caller doesn't
know whether to free the return value or not.

Signed-off-by: Richard Purdie <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Mark Hatle <[email protected]>
---
 pseudo_util.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pseudo_util.c b/pseudo_util.c
index 3eaa9e6..66afe25 100644
--- a/pseudo_util.c
+++ b/pseudo_util.c
@@ -346,13 +346,13 @@ without_libpseudo(char *list) {
 	if (list[0] == '=' || list[0] == PSEUDO_LINKPATH_SEPARATOR[0])
 		skip_start = 1;
 
-	if ((*real_regexec)(&libpseudo_regex, list, 1, pmatch, 0)) {
-		return list;
-	}
 	list = strdup(list);
 	if (!list) {
 		pseudo_error("Couldn't allocate memory to remove libpseudo from environment.\n");
 	}
+	if ((*real_regexec)(&libpseudo_regex, list, 1, pmatch, 0)) {
+		return list;
+	}
 	while (list && !(*real_regexec)(&libpseudo_regex, list, 1, pmatch, 0)) {
 		char *start = list + pmatch[0].rm_so;
 		char *end = list + pmatch[0].rm_eo;
-- 
1.8.3.1