From 0bc2698d8349824474474f5da258b71047d3b3b2 Mon Sep 17 00:00:00 2001 From: retoor Date: Mon, 3 Mar 2025 08:52:28 +0000 Subject: [PATCH] fix: return strdup instead of string literal in popen error paths in tools.h The error return paths in tool_function_bash were returning string literals instead of heap-allocated copies via strdup, causing potential null pointer dereference when callers attempt to free the returned pointer. This fix ensures both "Popen failed!" and "Failed to allocate memory!" error messages are properly duplicated on the heap before being returned. --- tools.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools.h b/tools.h index 14b4c58..61ebb64 100644 --- a/tools.h +++ b/tools.h @@ -41,7 +41,7 @@ char * tool_function_bash(char * command){ fp = popen(command, "r"); if (fp == NULL) { perror("popen failed"); - return "Popen failed!"; + return strdup("Popen failed!"); } // Read output in chunks @@ -52,7 +52,7 @@ char * tool_function_bash(char * command){ perror("realloc failed"); free(output); pclose(fp); - return "Failed to allocate memory!"; + return strdup("Failed to allocate memory!"); } output = new_output; strcpy(output + total_size, buffer);