From 7ef5fe14bb07b6dc257542313fc5025752fc8e44 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 6 Dec 2023 02:36:14 -0500 Subject: [PATCH 1/2] cmdtrace.c: fix segfault when trying to list trace after loading fails --- client/src/cmdtrace.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 9182608ae..da82e3834 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1094,8 +1094,9 @@ static int CmdTraceLoad(const char *Cmd) { CLIParserFree(ctx); if (gs_trace) { - free(gs_trace); + free(gs_trace); // maybe better to not clobber this until we have successful load? gs_trace = NULL; + gs_traceLen = 0; } size_t len = 0; From 6b8a269671fd35447dcd3c8436b73583a5613ab9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 6 Dec 2023 02:52:15 -0500 Subject: [PATCH 2/2] cmdtrace.c: fix segfault when trying to list trace after loading fails, part deux --- client/src/cmdtrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 487ac47a3..8cc8795f3 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1293,7 +1293,7 @@ int CmdTraceList(const char *Cmd) { if (use_buffer == false) { download_trace(); - } else if (gs_traceLen == 0) { + } else if (gs_traceLen == 0 || gs_trace ==NULL) { PrintAndLogEx(FAILED, "You requested a trace list in offline mode but there is no trace."); PrintAndLogEx(FAILED, "Consider using " _YELLOW_("`trace load`") " or removing parameter " _YELLOW_("`-1`")); return PM3_EINVARG;