From 937b2e41edd0f96baaaee3c1cba88040f148a610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 2 Oct 2024 20:13:12 +0800 Subject: [PATCH] Terminal (Linux): remove invalid info when fail to detect terminal by process tracing --- .../terminalshell/terminalshell_linux.c | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/detection/terminalshell/terminalshell_linux.c b/src/detection/terminalshell/terminalshell_linux.c index 0355e2563..c29d97742 100644 --- a/src/detection/terminalshell/terminalshell_linux.c +++ b/src/detection/terminalshell/terminalshell_linux.c @@ -161,23 +161,30 @@ static bool getTerminalInfoByPidEnv(FFTerminalResult* result, const char* pidEnv static void getTerminalFromEnv(FFTerminalResult* result) { - if( - result->processName.length > 0 && - !ffStrbufStartsWithS(&result->processName, "login") && - !ffStrbufEqualS(&result->processName, "(login)") && + if (result->processName.length > 0) + { + if (!ffStrbufStartsWithS(&result->processName, "login") && + !ffStrbufEqualS(&result->processName, "(login)") && - #ifdef __APPLE__ - !ffStrbufEqualS(&result->processName, "launchd") && - !ffStrbufEqualS(&result->processName, "stable") && //for WarpTerminal - #else - !ffStrbufEqualS(&result->processName, "systemd") && - !ffStrbufEqualS(&result->processName, "init") && - !ffStrbufEqualS(&result->processName, "(init)") && - !ffStrbufEqualS(&result->processName, "SessionLeader") && // #750 - #endif + #ifdef __APPLE__ + !ffStrbufEqualS(&result->processName, "launchd") && + !ffStrbufEqualS(&result->processName, "stable") && //for WarpTerminal + #else + !ffStrbufEqualS(&result->processName, "systemd") && + !ffStrbufEqualS(&result->processName, "init") && + !ffStrbufEqualS(&result->processName, "(init)") && + !ffStrbufEqualS(&result->processName, "SessionLeader") && // #750 + #endif - !ffStrbufEqualS(&result->processName, "0") - ) return; + !ffStrbufEqualS(&result->processName, "0") + ) return; + + ffStrbufClear(&result->processName); + ffStrbufClear(&result->exe); + result->exeName = result->exe.chars; + ffStrbufClear(&result->exePath); + result->pid = result->ppid = 0; + } const char* term = NULL;