diff options
author | Benny Baumann <BenBE@geshi.org> | 2020-12-21 22:29:18 +0100 |
---|---|---|
committer | Benny Baumann <BenBE@geshi.org> | 2020-12-21 22:29:18 +0100 |
commit | 10c6810bffb6f0107b9a436327524f8379f75cec (patch) | |
tree | 79db76b42c820842cbd93d3672d278a41b943d84 | |
parent | 068561351f6267eb505b1d3a956358111c28a289 (diff) |
Avoid NULL dereference on zombie processes
Fixes #361
-rw-r--r-- | linux/LinuxProcess.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c index 18679ff7..073cd649 100644 --- a/linux/LinuxProcess.c +++ b/linux/LinuxProcess.c @@ -368,6 +368,13 @@ void LinuxProcess_makeCommandStr(Process* this) { char *str = strStart; int cmdlineBasenameOffset = lp->procCmdlineBasenameOffset; + int cmdlineBasenameEnd = lp->procCmdlineBasenameEnd; + + if (!cmdline) { + cmdlineBasenameOffset = 0; + cmdlineBasenameEnd = 0; + cmdline = "(zombie)"; + } if (!showMergedCommand || !procExe || !procComm) { /* fall back to cmdline */ if (showMergedCommand && !procExe && procComm && strlen(procComm)) { /* Prefix column with comm */ @@ -385,11 +392,11 @@ void LinuxProcess_makeCommandStr(Process* this) { if (showProgramPath) { (void) stpcpyWithNewlineConversion(str, cmdline); mc->baseStart = cmdlineBasenameOffset; - mc->baseEnd = lp->procCmdlineBasenameEnd; + mc->baseEnd = cmdlineBasenameEnd; } else { (void) stpcpyWithNewlineConversion(str, cmdline + cmdlineBasenameOffset); mc->baseStart = 0; - mc->baseEnd = lp->procCmdlineBasenameEnd - cmdlineBasenameOffset; + mc->baseEnd = cmdlineBasenameEnd - cmdlineBasenameOffset; } if (mc->sep1) { |