From owner-freebsd-security Fri Apr 28 20:26:55 1995 Return-Path: security-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id UAA05155 for security-outgoing; Fri, 28 Apr 1995 20:26:55 -0700 Received: from news.rim.or.jp (news.rim.or.jp [202.255.181.3]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id UAA05149 for ; Fri, 28 Apr 1995 20:26:51 -0700 Received: (from uucp@localhost) by news.rim.or.jp (8.6.10+2.4W/3.3W-rim1.0) with UUCP id MAA16327; Sat, 29 Apr 1995 12:26:43 +0900 Received: from us.and.or.jp (localhost [127.0.0.1]) by us.and.or.jp (8.6.11/3.3W8) with ESMTP id LAA05883; Sat, 29 Apr 1995 11:30:44 +0900 Message-Id: <199504290230.LAA05883@us.and.or.jp> Reply-To: sa2c@st.rim.or.jp To: "Andrey A. Chernov, Black Mage" cc: security@FreeBSD.org Subject: Re: Call for remove setr[ug]id() and setre[ug]id() from libc In-reply-to: "Andrey A. Chernov, Black Mage"'s message of Fri, 28 Apr 1995 19:39:43 +0400 Date: Sat, 29 Apr 1995 11:30:42 +0900 From: NIIMI Satoshi Sender: security-owner@FreeBSD.org Precedence: bulk > So, I do it. Now it is impossible to unify rule: it divides > to POSIX and non-POSIX behaviour. Hmm... I've tried to hack set[ug]id() to check saved id like setre[ug]id(). Does this hack violate POSIX standard? --- kern_prot.c.orig Sat Apr 29 11:18:29 1995 +++ kern_prot.c Sat Apr 29 11:21:15 1995 @@ -262,6 +262,7 @@ setuid(p, uap, retval) uid = uap->uid; if (uid != pc->p_ruid && + uid != pc->p_svuid && (error = suser(pc->pc_ucred, &p->p_acflag))) return (error); /* @@ -322,7 +323,9 @@ setgid(p, uap, retval) int error; gid = uap->gid; - if (gid != pc->p_rgid && (error = suser(pc->pc_ucred, &p->p_acflag))) + if (gid != pc->p_rgid && + gid != pc->p_svgid && + (error = suser(pc->pc_ucred, &p->p_acflag))) return (error); pc->pc_ucred = crcopy(pc->pc_ucred); pc->pc_ucred->cr_groups[0] = gid; -- NIIMI Satoshi