From e90fe5ece9e76837fb438e90da77b29eff4e7456 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Wed, 24 Jan 2024 11:56:07 +0000 Subject: win32: avoid invalid free In external_exists() in appletlib.c it's necessary to take a copy of the pointer to the allocated variable path1 so it can be freed: find_executable() will change its value. --- libbb/appletlib.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libbb/appletlib.c b/libbb/appletlib.c index ebf24066d..5b42a9091 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c @@ -280,10 +280,12 @@ int FAST_FUNC find_applet_by_name(const char *name) static int external_exists(const char *name, const char *path) { - char *path1 = xstrdup(path ?: getenv("PATH")); - char *ret = find_executable(name, &path1); + char *path0, *path1, *ret; + + path0 = path1 = xstrdup(path ?: getenv("PATH")); + ret = find_executable(name, &path1); free(ret); - free(path1); + free(path0); return ret != NULL; } -- cgit v1.2.3-55-g6feb