svn commit: r328943 - in stable/10/lib/libc: gen sys
Kirk McKusick
mckusick at FreeBSD.org
Tue Feb 6 19:09:50 UTC 2018
Author: mckusick
Date: Tue Feb 6 19:09:49 2018
New Revision: 328943
URL: https://svnweb.freebsd.org/changeset/base/328943
Log:
MFC of 328304 and 328382.
Do not dedup egid (group entry 0)
Modified:
stable/10/lib/libc/gen/getgrent.c
stable/10/lib/libc/sys/setgroups.2
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/lib/libc/gen/getgrent.c
==============================================================================
--- stable/10/lib/libc/gen/getgrent.c Tue Feb 6 19:09:03 2018 (r328942)
+++ stable/10/lib/libc/gen/getgrent.c Tue Feb 6 19:09:49 2018 (r328943)
@@ -433,7 +433,7 @@ gr_addgid(gid_t gid, gid_t *groups, int maxgrp, int *g
{
int ret, dupc;
- for (dupc = 0; dupc < MIN(maxgrp, *grpcnt); dupc++) {
+ for (dupc = 1; dupc < MIN(maxgrp, *grpcnt); dupc++) {
if (groups[dupc] == gid)
return 1;
}
Modified: stable/10/lib/libc/sys/setgroups.2
==============================================================================
--- stable/10/lib/libc/sys/setgroups.2 Tue Feb 6 19:09:03 2018 (r328942)
+++ stable/10/lib/libc/sys/setgroups.2 Tue Feb 6 19:09:49 2018 (r328943)
@@ -28,7 +28,7 @@
.\" @(#)setgroups.2 8.2 (Berkeley) 4/16/94
.\" $FreeBSD$
.\"
-.Dd April 16, 1994
+.Dd January 19, 2018
.Dt SETGROUPS 2
.Os
.Sh NAME
@@ -56,6 +56,23 @@ more than
.Dv {NGROUPS_MAX}+1 .
.Pp
Only the super-user may set a new group list.
+.Pp
+The first entry of the group array
+.Pq Va gidset[0]
+is used as the effective group-ID for the process.
+This entry is over-written when a setgid program is run.
+To avoid losing access to the privileges of the
+.Va gidset[0]
+entry, it should be duplicated later in the group array.
+By convention,
+this happens because the group value indicated
+in the password file also appears in
+.Pa /etc/group .
+The group value in the password file is placed in
+.Va gidset[0]
+and that value then gets added a second time when the
+.Pa /etc/group
+file is scanned to create the group set.
.Sh RETURN VALUES
.Rv -std setgroups
.Sh ERRORS
More information about the svn-src-stable
mailing list