diff options
Diffstat (limited to 'sys/kern/sysv_msg.c')
-rw-r--r-- | sys/kern/sysv_msg.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c index d3b8a98..8b010b5 100644 --- a/sys/kern/sysv_msg.c +++ b/sys/kern/sysv_msg.c @@ -1,4 +1,4 @@ -/* $Id: sysv_msg.c,v 1.17 1997/11/06 19:29:24 phk Exp $ */ +/* $Id: sysv_msg.c,v 1.18 1998/03/30 09:50:35 phk Exp $ */ /* * Implementation of SVID messages @@ -252,8 +252,11 @@ msgctl(p, uap) return(eval); if ((eval = copyin(user_msqptr, &msqbuf, sizeof(msqbuf))) != 0) return(eval); - if (msqbuf.msg_qbytes > msqptr->msg_qbytes && cred->cr_uid != 0) - return(EPERM); + if (msqbuf.msg_qbytes > msqptr->msg_qbytes) { + eval = suser(cred, &p->p_acflag); + if (eval) + return(eval); + } if (msqbuf.msg_qbytes > msginfo.msgmnb) { #ifdef MSG_DEBUG_OK printf("can't increase msg_qbytes beyond %d (truncating)\n", |