mirror of
https://github.com/aristocratos/btop.git
synced 2024-06-14 16:34:39 +12:00
fix: don't mangle memory for zombie processes
for a zombie process, `proc_pidpath` returns 0, and nothing is written in fullname, so it's uninitialized garbage
This commit is contained in:
parent
edcb68cbb9
commit
2b09f29a1e
|
@ -1212,10 +1212,14 @@ namespace Proc {
|
|||
//? Get program name, command, username, parent pid, nice and status
|
||||
if (no_cache) {
|
||||
char fullname[PROC_PIDPATHINFO_MAXSIZE];
|
||||
proc_pidpath(pid, fullname, sizeof(fullname));
|
||||
const string f_name = std::string(fullname);
|
||||
size_t lastSlash = f_name.find_last_of('/');
|
||||
new_proc.name = f_name.substr(lastSlash + 1);
|
||||
int rc = proc_pidpath(pid, fullname, sizeof(fullname));
|
||||
string f_name = "<defunct>";
|
||||
if (rc != 0) {
|
||||
f_name = std::string(fullname);
|
||||
size_t lastSlash = f_name.find_last_of('/');
|
||||
f_name = f_name.substr(lastSlash + 1);
|
||||
}
|
||||
new_proc.name = f_name;
|
||||
//? Get process arguments if possible, fallback to process path in case of failure
|
||||
if (Shared::arg_max > 0) {
|
||||
std::unique_ptr<char[]> proc_chars(new char[Shared::arg_max]);
|
||||
|
|
Loading…
Reference in a new issue