Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F133683578
D20415.id57920.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D20415.id57920.diff
View Options
Index: crypto/heimdal/lib/ipc/server.c
===================================================================
--- crypto/heimdal/lib/ipc/server.c
+++ crypto/heimdal/lib/ipc/server.c
@@ -550,7 +550,7 @@
{
c->unixrights.uid = peercred.cr_uid;
c->unixrights.gid = peercred.cr_gid;
- c->unixrights.pid = 0;
+ c->unixrights.pid = peercred.cr_pid;
return 1;
}
}
Index: share/man/man4/unix.4
===================================================================
--- share/man/man4/unix.4
+++ share/man/man4/unix.4
@@ -310,6 +310,7 @@
uid_t cr_uid; /* effective user id */
short cr_ngroups; /* number of groups */
gid_t cr_groups[XU_NGROUPS]; /* groups */
+ pid_t cr_pid; /* process id of the sending process */
};
.Ed
The
Index: sys/compat/linux/linux_socket.c
===================================================================
--- sys/compat/linux/linux_socket.c
+++ sys/compat/linux/linux_socket.c
@@ -1530,10 +1530,7 @@
name, &xu, UIO_SYSSPACE, &xulen);
if (error != 0)
return (error);
- /*
- * XXX Use 0 for pid as the FreeBSD does not cache peer pid.
- */
- lxu.pid = 0;
+ lxu.pid = xu.cr_pid;
lxu.uid = xu.cr_uid;
lxu.gid = xu.cr_gid;
return (copyout(&lxu, PTRIN(args->optval), sizeof(lxu)));
Index: sys/kern/kern_prot.c
===================================================================
--- sys/kern/kern_prot.c
+++ sys/kern/kern_prot.c
@@ -1957,6 +1957,14 @@
ngroups * sizeof(*cr->cr_groups));
}
+void inline
+cru2xt(struct thread *td, struct xucred *xcr)
+{
+
+ cru2x(td->td_ucred, xcr);
+ xcr->cr_pid = td->td_proc->p_pid;
+}
+
/*
* Set initial process credentials.
* Callers are responsible for providing the reference for provided credentials.
Index: sys/kern/uipc_usrreq.c
===================================================================
--- sys/kern/uipc_usrreq.c
+++ sys/kern/uipc_usrreq.c
@@ -912,7 +912,7 @@
SOCK_LOCK(so);
error = solisten_proto_check(so);
if (error == 0) {
- cru2x(td->td_ucred, &unp->unp_peercred);
+ cru2xt(td, &unp->unp_peercred);
solisten_proto(so, backlog);
}
SOCK_UNLOCK(so);
@@ -1656,7 +1656,7 @@
unp_copy_peercred(struct thread *td, struct unpcb *client_unp,
struct unpcb *server_unp, struct unpcb *listen_unp)
{
- cru2x(td->td_ucred, &client_unp->unp_peercred);
+ cru2xt(td, &client_unp->unp_peercred);
client_unp->unp_flags |= UNP_HAVEPC;
memcpy(&server_unp->unp_peercred, &listen_unp->unp_peercred,
@@ -2755,8 +2755,8 @@
int comma, i;
db_print_indent(indent);
- db_printf("cr_version: %u cr_uid: %u cr_ngroups: %d\n",
- xu->cr_version, xu->cr_uid, xu->cr_ngroups);
+ db_printf("cr_version: %u cr_uid: %u cr_pid: %d cr_ngroups: %d\n",
+ xu->cr_version, xu->cr_uid, xu->cr_pid, xu->cr_ngroups);
db_print_indent(indent);
db_printf("cr_groups: ");
comma = 0;
Index: sys/sys/ucred.h
===================================================================
--- sys/sys/ucred.h
+++ sys/sys/ucred.h
@@ -87,10 +87,14 @@
uid_t cr_uid; /* effective user id */
short cr_ngroups; /* number of groups */
gid_t cr_groups[XU_NGROUPS]; /* groups */
- void *_cr_unused1; /* compatibility with old ucred */
+ union {
+ void *_cr_unused1; /* compatibility with old ucred */
+ pid_t _pid;
+ } _cr;
};
#define XUCRED_VERSION 0
+#define cr_pid _cr._pid
/* This can be used for both ucred and xucred structures. */
#define cr_gid cr_groups[0]
@@ -114,6 +118,7 @@
struct ucred *crget(void);
struct ucred *crhold(struct ucred *cr);
void cru2x(struct ucred *cr, struct xucred *xcr);
+void cru2xt(struct thread *td, struct xucred *xcr);
void crsetgroups(struct ucred *cr, int n, gid_t *groups);
int groupmember(gid_t gid, struct ucred *cred);
#endif /* _KERNEL */
Index: usr.sbin/mountd/mountd.c
===================================================================
--- usr.sbin/mountd/mountd.c
+++ usr.sbin/mountd/mountd.c
@@ -244,7 +244,7 @@
(uid_t)65534,
1,
{ (gid_t)65533 },
- NULL
+ { NULL }
};
static int force_v2 = 0;
static int resvport_only = 1;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Oct 28, 2:00 PM (9 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24357806
Default Alt Text
D20415.id57920.diff (3 KB)
Attached To
Mode
D20415: Linuxulator: complete LOCAL_PEERCRED support.
Attached
Detach File
Event Timeline
Log In to Comment