From owner-freebsd-bugs@FreeBSD.ORG Wed Feb 27 17:30:07 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A3C691065671 for ; Wed, 27 Feb 2008 17:30:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 94B0D8FC16 for ; Wed, 27 Feb 2008 17:30:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m1RHU76P036538 for ; Wed, 27 Feb 2008 17:30:07 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m1RHU7qh036535; Wed, 27 Feb 2008 17:30:07 GMT (envelope-from gnats) Date: Wed, 27 Feb 2008 17:30:07 GMT Message-Id: <200802271730.m1RHU7qh036535@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Denis Barov Cc: Subject: Re: kern/113398: [libc] initgroups fails rather than truncates if number of groups > NGROUPS_MAX meaning the user can no longer login X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Denis Barov List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2008 17:30:07 -0000 The following reply was made to PR kern/113398; it has been noted by GNATS. From: Denis Barov To: bug-followup@FreeBSD.org, dean.povey@quest.com Cc: Subject: Re: kern/113398: [libc] initgroups fails rather than truncates if number of groups > NGROUPS_MAX meaning the user can no longer login Date: Wed, 27 Feb 2008 20:03:43 +0300 This problem becomes hard trouble when using paw_winbind in large windows domain. Here patch to increase maximum groups to 64. in sys/user.h: #ifdef i386 #define KINFO_PROC_SIZE 768 #endif One groupe takes 32 bits of memory, 16 groups taking 4*16 bytes, 64 groups taking 4*64 then new KINFO_PROC_SIZE size is: 768-(16*4)+(64*4) = 960 and same for other arcs -- Cheers Denis Barov --- src/sys/sys/user.h Fri Mar 16 09:35:27 2007 +++ src/sys/sys/user.h Fri Mar 16 09:29:08 2007 @@ -86,16 +86,18 @@ #define KINFO_PROC_SIZE 1088 #endif #ifdef __amd64__ -#define KINFO_PROC_SIZE 1088 +#define KINFO_PROC_SIZE 1280 +//#define KINFO_PROC_SIZE 1088 #endif #ifdef __arm__ #define KINFO_PROC_SIZE 792 #endif #ifdef __ia64__ -#define KINFO_PROC_SIZE 1088 +#define KINFO_PROC_SIZE 1280 +//#define KINFO_PROC_SIZE 1088 #endif #ifdef __i386__ -#define KINFO_PROC_SIZE 768 +#define KINFO_PROC_SIZE 960 #endif #ifdef __powerpc__ #define KINFO_PROC_SIZE 768 @@ -112,7 +114,7 @@ #define OCOMMLEN 16 /* size of returned ki_ocomm name */ #define COMMLEN 19 /* size of returned ki_comm name */ #define KI_EMULNAMELEN 16 /* size of returned ki_emul */ -#define KI_NGROUPS 16 /* number of groups in ki_groups */ +#define KI_NGROUPS 64 /* number of groups in ki_groups */ #define LOGNAMELEN 17 /* size of returned ki_login */ struct kinfo_proc { --- src/sys/sys/syslimits.h Fri Mar 16 00:41:57 2007 +++ src/sys/sys/syslimits.h Mon Feb 26 21:23:12 2007 @@ -58,7 +58,7 @@ #define MAX_CANON 255 /* max bytes in term canon input line */ #define MAX_INPUT 255 /* max bytes in terminal input */ #define NAME_MAX 255 /* max bytes in a file name */ -#define NGROUPS_MAX 16 /* max supplemental group id's */ +#define NGROUPS_MAX 64 /* max supplemental group id's */ #ifndef OPEN_MAX #define OPEN_MAX 64 /* max open files per process */ #endif