summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Scott <nathans@redhat.com>2020-12-22 16:55:11 +1100
committerNathan Scott <nathans@redhat.com>2020-12-22 16:55:11 +1100
commitfc7aead36bdee9d23b68eec277c2721aea793581 (patch)
tree65e8893aab4165c51fd7e7459476aae84da9b74a
parent737cd6167ace671e488af6af0f3ef011e899cdde (diff)
parent6502b026664a8a53fceff16f52981b43fe73cd2b (diff)
Merge branch 'harden_makecommandstr' of https://github.com/BenBE/htop into BenBE-harden_makecommandstr
-rw-r--r--linux/LinuxProcess.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c
index 18679ff7..802e7225 100644
--- a/linux/LinuxProcess.c
+++ b/linux/LinuxProcess.c
@@ -368,6 +368,16 @@ void LinuxProcess_makeCommandStr(Process* this) {
char *str = strStart;
int cmdlineBasenameOffset = lp->procCmdlineBasenameOffset;
+ int cmdlineBasenameEnd = lp->procCmdlineBasenameEnd;
+
+ if (!cmdline) {
+ cmdlineBasenameOffset = 0;
+ cmdlineBasenameEnd = 0;
+ cmdline = "(zombie)";
+ }
+
+ assert(cmdlineBasenameOffset >= 0);
+ assert(cmdlineBasenameOffset <= strlen(cmdline));
if (!showMergedCommand || !procExe || !procComm) { /* fall back to cmdline */
if (showMergedCommand && !procExe && procComm && strlen(procComm)) { /* Prefix column with comm */
@@ -385,11 +395,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) {
@@ -404,6 +414,9 @@ void LinuxProcess_makeCommandStr(Process* this) {
int exeBasenameOffset = lp->procExeBasenameOffset;
int exeBasenameLen = exeLen - exeBasenameOffset;
+ assert(exeBasenameOffset >= 0);
+ assert(exeBasenameOffset <= strlen(procExe));
+
/* Start with copying exe */
if (showProgramPath) {
str = stpcpy(str, procExe);

© 2014-2024 Faster IT GmbH | imprint | privacy policy