summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2020-07-09 17:26:49 +0000
committerMark Johnston <markj@FreeBSD.org>2020-07-09 17:26:49 +0000
commitf4f16af1d38367e68bee456af2d7e284f6aad87d (patch)
treea5530222954ca32be8387cd853ddb19496039b48
parent201a1f34da99120214f49ac573ddec97c363c1a5 (diff)
Notes
-rw-r--r--lib/libc/sys/msgctl.24
-rw-r--r--sys/kern/sysv_msg.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/libc/sys/msgctl.2 b/lib/libc/sys/msgctl.2
index 1ca61ed77b2a..745b365c4d93 100644
--- a/lib/libc/sys/msgctl.2
+++ b/lib/libc/sys/msgctl.2
@@ -31,7 +31,7 @@
.\"
.\" $FreeBSD$
.\"/
-.Dd July 9, 2009
+.Dd July 9, 2020
.Dt MSGCTL 2
.Os
.Sh NAME
@@ -63,8 +63,6 @@ and contains (amongst others) the following members:
.Bd -literal
struct msqid_ds {
struct ipc_perm msg_perm; /* msg queue permission bits */
- struct msg *__msg_first; /* kernel data, don't use */
- struct msg *__msg_last; /* kernel data, don't use */
msglen_t msg_cbytes; /* number of bytes in use on the queue */
msgqnum_t msg_qnum; /* number of msgs in the queue */
msglen_t msg_qbytes; /* max # of bytes on the queue */
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c
index de6faafde286..aab4551357c2 100644
--- a/sys/kern/sysv_msg.c
+++ b/sys/kern/sysv_msg.c
@@ -613,6 +613,13 @@ kern_msgctl(struct thread *td, int msqid, int cmd, struct msqid_ds *msqbuf)
*msqbuf = msqkptr->u;
if (td->td_ucred->cr_prison != msqkptr->cred->cr_prison)
msqbuf->msg_perm.key = IPC_PRIVATE;
+
+ /*
+ * Try to hide the fact that the structure layout is shared by
+ * both the kernel and userland. These pointers are not useful
+ * to userspace.
+ */
+ msqbuf->__msg_first = msqbuf->__msg_last = NULL;
break;
default: