From owner-freebsd-bugs Wed Nov 15 05:23:14 1995 Return-Path: owner-bugs Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id FAA27382 for bugs-outgoing; Wed, 15 Nov 1995 05:23:14 -0800 Received: from Root.COM (implode.Root.COM [198.145.90.17]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id FAA27375 for ; Wed, 15 Nov 1995 05:23:09 -0800 Received: from corbin.Root.COM (corbin [198.145.90.50]) by Root.COM (8.6.12/8.6.5) with ESMTP id FAA06338; Wed, 15 Nov 1995 05:23:08 -0800 Received: from localhost (localhost [127.0.0.1]) by corbin.Root.COM (8.6.12/8.6.5) with SMTP id FAA00623; Wed, 15 Nov 1995 05:22:26 -0800 Message-Id: <199511151322.FAA00623@corbin.Root.COM> To: jan@todonix.ping.de (Jan Wedekind) cc: freebsd-bugs@freebsd.org Subject: Re: panic: nfsreq nogrps In-reply-to: Your message of "Wed, 15 Nov 95 14:14:59 +0100." From: David Greenman Reply-To: davidg@Root.COM Date: Wed, 15 Nov 1995 05:22:26 -0800 Sender: owner-bugs@freebsd.org Precedence: bulk >> It's usually caused by Smail. Smail does a setgroups(0,foo) which isn't >> valid (you have to have at least one group in the list - the effective gid). >> This was fixed recently in the version of Smail in the ports tree. The bug in >> the kernel was fixed in -current just recently. The kernel fix is to disallow >> ngroups=0. >> >Thanks for the hint, but on that machine (with the panic) only >sendmail is running. > >On the other machine (mounted by nfs) smail is running, but >no directory-tree concerning mail configuring or delivery >is mounted by the other on. Then something else must be doing the setgroups() call. The kernel fix is attached. -DG Index: kern_prot.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_prot.c,v retrieving revision 1.13 retrieving revision 1.14 diff -c -r1.13 -r1.14 *** 1.13 1995/10/08 00:06:07 --- 1.14 1995/11/04 10:50:55 *************** *** 407,413 **** if ((error = suser(pc->pc_ucred, &p->p_acflag))) return (error); ! if ((ngrp = uap->gidsetsize) > NGROUPS) return (EINVAL); pc->pc_ucred = crcopy(pc->pc_ucred); if ((error = copyin((caddr_t)uap->gidset, --- 407,414 ---- if ((error = suser(pc->pc_ucred, &p->p_acflag))) return (error); ! ngrp = uap->gidsetsize; ! if (ngrp < 1 || ngrp > NGROUPS) return (EINVAL); pc->pc_ucred = crcopy(pc->pc_ucred); if ((error = copyin((caddr_t)uap->gidset,