44 lines
1.3 KiB
Diff
44 lines
1.3 KiB
Diff
From a1fa8c08a6605339ac9cb5d9101f4f24c7430f62 Mon Sep 17 00:00:00 2001
|
|
From: liuxiaobo <liuxiaobo19@huawei.com>
|
|
Date: Thu, 27 Jun 2024 16:22:26 +0800
|
|
Subject: [PATCH] upatch-hijacker: fix memory leak
|
|
|
|
Signed-off-by: liuxiaobo <liuxiaobo19@huawei.com>
|
|
---
|
|
upatch-hijacker/hijacker/gnu-as-hijacker.c | 11 +++++++++--
|
|
1 file changed, 9 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/upatch-hijacker/hijacker/gnu-as-hijacker.c b/upatch-hijacker/hijacker/gnu-as-hijacker.c
|
|
index 860a84f..886420e 100644
|
|
--- a/upatch-hijacker/hijacker/gnu-as-hijacker.c
|
|
+++ b/upatch-hijacker/hijacker/gnu-as-hijacker.c
|
|
@@ -48,6 +48,7 @@ int main(int argc, char *argv[], char *envp[])
|
|
{
|
|
// Try to get executable path
|
|
const char *filename = get_current_exec();
|
|
+
|
|
if (filename == NULL) {
|
|
return -ENOENT;
|
|
}
|
|
@@ -111,9 +112,15 @@ int main(int argc, char *argv[], char *envp[])
|
|
(void)unlink(output_file);
|
|
}
|
|
|
|
+ int ret = 0;
|
|
if (symlink(new_output_file, output_file) != 0) {
|
|
- return execve(filename, argv, envp);
|
|
+ ret = execve(filename, argv, envp);
|
|
+ goto out;
|
|
}
|
|
|
|
- return execve(filename, (char* const*)new_argv, envp);
|
|
+ ret = execve(filename, (char* const*)new_argv, envp);
|
|
+out:
|
|
+ free(new_argv);
|
|
+
|
|
+ return ret;
|
|
}
|
|
--
|
|
2.34.1
|
|
|