diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2021-01-06 16:01:05 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2021-01-06 16:01:05 +0100 |
commit | f95276d744dee12a237d1a3f2836f36340c6abc0 (patch) | |
tree | 8734bf659d42f7a235cff2b2f42c58b9b461c1f4 | |
parent | fd77b0cd0e79c8f0f61969a4c2eb46d6d5c18f4c (diff) | |
download | psutil-f95276d744dee12a237d1a3f2836f36340c6abc0.tar.gz |
#1901 / macOS: better err msg on proc_pidinfo()
Signed-off-by: Giampaolo Rodola <g.rodola@gmail.com>
-rw-r--r-- | psutil/arch/osx/process_info.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/psutil/arch/osx/process_info.c b/psutil/arch/osx/process_info.c index fb9f24ff..15ad3b89 100644 --- a/psutil/arch/osx/process_info.c +++ b/psutil/arch/osx/process_info.c @@ -370,14 +370,21 @@ psutil_get_kinfo_proc(pid_t pid, struct kinfo_proc *kp) { /* * A wrapper around proc_pidinfo(). + * https://opensource.apple.com/source/xnu/xnu-2050.7.9/bsd/kern/proc_info.c. * Returns 0 on failure (and Python exception gets already set). */ int psutil_proc_pidinfo(pid_t pid, int flavor, uint64_t arg, void *pti, int size) { errno = 0; - int ret = proc_pidinfo(pid, flavor, arg, pti, size); - if ((ret <= 0) || ((unsigned long)ret < sizeof(pti))) { - psutil_raise_for_pid(pid, "proc_pidinfo()"); + int ret; + + ret = proc_pidinfo(pid, flavor, arg, pti, size); + if (ret <= 0) { + psutil_raise_for_pid(pid, "proc_pidinfo() failed"); + return 0; + } + else if ((unsigned long )ret < sizeof(pti)) { + psutil_raise_for_pid(pid, "proc_pidinfo() len mismatch"); return 0; } return ret; |