Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Mar 2000 16:58:00 -0500 (EST)
From:      Brian Dean <brdean@unx.sas.com>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Kris Kennaway <kris@hub.freebsd.org>, current@FreeBSD.ORG
Subject:   Re: HEADS UP! IPC security (Re: cvs commit: src/sys/kern sysv_ipc.c (fwd))
Message-ID:  <200003022158.QAA00364@dean.pc.sas.com>
In-Reply-To: <Pine.BSF.4.21.0003030722070.2011-100000@alphplex.bde.org> from Bruce Evans at "Mar 3, 2000 07:30:11 am"

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans wrote:
> It has too many style bugs for me.  It corrupts all tabs to spaces and
> has some other style bugs.

Resisting the temptation to cut-and-paste (resulting in the lost
tabs), and incorporating your other suggestions, how about this
version?

Thanks,
-Brian

Index: sysv_ipc.c
===================================================================
RCS file: /usr00/mirror/ncvs/src/sys/kern/sysv_ipc.c,v
retrieving revision 1.13
diff -u -r1.13 sysv_ipc.c
--- sysv_ipc.c	2000/02/29 22:58:59	1.13
+++ sysv_ipc.c	2000/03/02 21:45:25
@@ -51,16 +51,11 @@
 	int mode;
 {
 	struct ucred *cred = p->p_ucred;
-	int error;
 
-	error = suser(p);
-	if (!error)
-		return (0);
-
 	/* Check for user match. */
 	if (cred->cr_uid != perm->cuid && cred->cr_uid != perm->uid) {
 		if (mode & IPC_M)
-			return (EPERM);
+			return (suser(p) == 0 ? 0 : EPERM);
 		/* Check for group match. */
 		mode >>= 3;
 		if (!groupmember(perm->gid, cred) &&
@@ -71,7 +66,7 @@
 
 	if (mode & IPC_M)
 		return (0);
-	return ((mode & perm->mode) == mode ? 0 : EACCES);
+	return ((mode & perm->mode) == mode || suser(p) == 0 ? 0 : EACCES);
 }
 
 #endif /* defined(SYSVSEM) || defined(SYSVSHM) || defined(SYSVMSG) */


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003022158.QAA00364>