version 1.218, 2021/07/18 23:57:14 |
version 1.219, 2021/10/05 18:00:28 |
Line 1221 procfs_root_readdir_callback(struct proc |
|
Line 1221 procfs_root_readdir_callback(struct proc |
|
if (uiop->uio_resid < UIO_MX) |
if (uiop->uio_resid < UIO_MX) |
return -1; /* no space */ |
return -1; /* no space */ |
|
|
if (ctxp->off < ctxp->startoff) { |
|
ctxp->off++; |
|
return 0; |
|
} |
|
|
|
if (kauth_authorize_process(kauth_cred_get(), |
if (kauth_authorize_process(kauth_cred_get(), |
KAUTH_PROCESS_CANSEE, p, |
KAUTH_PROCESS_CANSEE, p, |
KAUTH_ARG(KAUTH_REQ_PROCESS_CANSEE_ENTRY), NULL, NULL) != 0) |
KAUTH_ARG(KAUTH_REQ_PROCESS_CANSEE_ENTRY), NULL, NULL) != 0) |
return 0; |
return 0; |
|
|
|
if (ctxp->off < ctxp->startoff) { |
|
ctxp->off++; |
|
return 0; |
|
} |
|
|
memset(&d, 0, UIO_MX); |
memset(&d, 0, UIO_MX); |
d.d_reclen = UIO_MX; |
d.d_reclen = UIO_MX; |
d.d_fileno = PROCFS_FILENO(p->p_pid, PFSproc, -1); |
d.d_fileno = PROCFS_FILENO(p->p_pid, PFSproc, -1); |
Line 1483 procfs_readdir(void *v) |
|
Line 1483 procfs_readdir(void *v) |
|
*/ |
*/ |
|
|
case PFSroot: { |
case PFSroot: { |
|
struct proc *p; |
int nc = 0; |
int nc = 0; |
|
|
if (ap->a_ncookies) { |
if (ap->a_ncookies) { |
Line 1548 procfs_readdir(void *v) |
|
Line 1549 procfs_readdir(void *v) |
|
i = ctx.off; |
i = ctx.off; |
if (i >= ctx.off + nproc_root_targets) |
if (i >= ctx.off + nproc_root_targets) |
break; |
break; |
|
error = procfs_proc_lock(vp->v_mount, pfs->pfs_pid, &p, ESRCH); |
|
if (error) |
|
break; |
for (pt = &proc_root_targets[i - ctx.off]; |
for (pt = &proc_root_targets[i - ctx.off]; |
uio->uio_resid >= UIO_MX && |
uio->uio_resid >= UIO_MX && |
pt < &proc_root_targets[nproc_root_targets]; |
pt < &proc_root_targets[nproc_root_targets]; |
Line 1555 procfs_readdir(void *v) |
|
Line 1559 procfs_readdir(void *v) |
|
if (pt->pt_valid && |
if (pt->pt_valid && |
(*pt->pt_valid)(NULL, vp->v_mount) == 0) |
(*pt->pt_valid)(NULL, vp->v_mount) == 0) |
continue; |
continue; |
|
if (kauth_authorize_process(kauth_cred_get(), |
|
KAUTH_PROCESS_CANSEE, p, |
|
KAUTH_ARG(KAUTH_REQ_PROCESS_CANSEE_ENTRY), |
|
NULL, NULL) != 0) |
|
continue; |
d.d_fileno = PROCFS_FILENO(0, pt->pt_pfstype, -1); |
d.d_fileno = PROCFS_FILENO(0, pt->pt_pfstype, -1); |
d.d_namlen = pt->pt_namlen; |
d.d_namlen = pt->pt_namlen; |
memcpy(d.d_name, pt->pt_name, pt->pt_namlen + 1); |
memcpy(d.d_name, pt->pt_name, pt->pt_namlen + 1); |
Line 1568 procfs_readdir(void *v) |
|
Line 1577 procfs_readdir(void *v) |
|
} |
} |
|
|
ncookies = nc; |
ncookies = nc; |
|
procfs_proc_unlock(p); |
break; |
break; |
} |
} |
|
|