aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/sysv_msg.c
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2011-04-06 16:59:54 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2011-04-06 16:59:54 +0000
commit8caddd81e2e2dcfac3e54e4eb39ea863b99aa441 (patch)
tree1bb412523ffd3b85f320c30f0d19d8cd22bd8c98 /sys/kern/sysv_msg.c
parentf497cda257dff5ab0372595e338904ef592c94a3 (diff)
Notes
Diffstat (limited to 'sys/kern/sysv_msg.c')
-rw-r--r--sys/kern/sysv_msg.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c
index ace2eab349a7..3e67bd03a46f 100644
--- a/sys/kern/sysv_msg.c
+++ b/sys/kern/sysv_msg.c
@@ -466,6 +466,9 @@ kern_msgctl(td, msqid, cmd, msqbuf)
}
#endif
+ crfree(msqkptr->cred);
+ msqkptr->cred = NULL;
+
/* Free the message headers */
msghdr = msqkptr->u.msg_first;
while (msghdr != NULL) {
@@ -620,6 +623,8 @@ msgget(td, uap)
msqkptr->u.msg_perm.cgid = cred->cr_gid;
msqkptr->u.msg_perm.gid = cred->cr_gid;
msqkptr->u.msg_perm.mode = (msgflg & 0777);
+ crhold(cred);
+ msqkptr->cred = cred;
/* Make sure that the returned msqid is unique */
msqkptr->u.msg_perm.seq = (msqkptr->u.msg_perm.seq + 1) & 0x7fff;
msqkptr->u.msg_first = NULL;