mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-10-16 17:30:27 +00:00
`trace save` saved the client side trace buffer whenever it was non-empty and only downloaded from device when it was empty. After `trace load` or `trace list -1` a following sniff -> `trace save` silently wrote the old trace, byte identical to the previous save, with no way to reset it. See #3592, and #1252 / #1512 for earlier reports of the same thing. - `trace save` now downloads from device by default and takes `-1` to save the client side buffer, mirroring `trace list`. Offline it falls back to the buffer so `trace load` -> `trace save` still works. - split download_trace() into download_trace_ex(), which hands the caller its own buffer. `trace save` uses it and no longer mutates gs_trace, so `-1` means the client buffer regardless of what ran before. - download_trace() freed gs_trace before it knew the download had worked, so a timeout threw away a loaded trace. It now swaps on success only. - added `trace clear` to discard the client side buffer, and a shared ClearTraceBuffer() to replace the free/NULL/zero pattern that was open coded in ImportTraceBuffer() and CmdTraceLoad(). Help text for both new commands names the device vs client distinction. Co-Authored-By: Claude Opus 5 (1M context)
31 lines
1.2 KiB
C
31 lines
1.2 KiB
C
//-----------------------------------------------------------------------------
|
|
// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// See LICENSE.txt for the text of the license.
|
|
//-----------------------------------------------------------------------------
|
|
// Trace commands
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef CMDTRACE_H__
|
|
#define CMDTRACE_H__
|
|
|
|
#include "common.h"
|
|
|
|
int CmdTrace(const char *Cmd);
|
|
int CmdTraceList(const char *Cmd);
|
|
int CmdTraceListAlias(const char *Cmd, const char *alias, const char *protocol);
|
|
bool ImportTraceBuffer(const uint8_t *trace_src, uint16_t trace_len);
|
|
void ClearTraceBuffer(void);
|
|
|
|
#endif
|