summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2021-01-06 16:01:05 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2021-01-06 16:01:05 +0100
commitf95276d744dee12a237d1a3f2836f36340c6abc0 (patch)
tree8734bf659d42f7a235cff2b2f42c58b9b461c1f4
parentfd77b0cd0e79c8f0f61969a4c2eb46d6d5c18f4c (diff)
downloadpsutil-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.c13
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;