Page MenuHomeFreeBSD

D12972.id34864.diff
No OneTemporary

D12972.id34864.diff

Index: lib/libc/gen/setmode.c
===================================================================
--- lib/libc/gen/setmode.c
+++ lib/libc/gen/setmode.c
@@ -356,7 +356,7 @@
* security.bsd.unprivileged_proc_debug is set to 0.
*/
len = sizeof(smask);
- if (sysctl((int[4]){ CTL_KERN, KERN_PROC, KERN_PROC_UMASK, getpid() },
+ if (sysctl((int[4]){ CTL_KERN, KERN_PROC, KERN_PROC_UMASK, 0 },
4, &smask, &len, NULL, 0) == 0)
return (smask);
Index: sys/kern/kern_proc.c
===================================================================
--- sys/kern/kern_proc.c
+++ sys/kern/kern_proc.c
@@ -2770,18 +2770,25 @@
struct proc *p;
int error;
u_short fd_cmask;
+ pid_t pid;
if (namelen != 1)
return (EINVAL);
- error = pget((pid_t)name[0], PGET_WANTREAD, &p);
+ pid = (pid_t)name[0];
+ p = curproc;
+ if (pid == p->p_pid || pid == 0) {
+ fd_cmask = p->p_fd->fd_cmask;
+ goto out;
+ }
+
+ error = pget(pid, PGET_WANTREAD, &p);
if (error != 0)
return (error);
- FILEDESC_SLOCK(p->p_fd);
fd_cmask = p->p_fd->fd_cmask;
- FILEDESC_SUNLOCK(p->p_fd);
PRELE(p);
+out:
error = SYSCTL_OUT(req, &fd_cmask, sizeof(fd_cmask));
return (error);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 21, 3:19 PM (19 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31892217
Default Alt Text
D12972.id34864.diff (1 KB)

Event Timeline