The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=48a186863431ec7a23c6174bc376cafa59dd5fbf
commit 48a186863431ec7a23c6174bc376cafa59dd5fbf Author: Mark Johnston <ma...@freebsd.org> AuthorDate: 2021-01-21 19:30:19 +0000 Commit: Mark Johnston <ma...@freebsd.org> CommitDate: 2021-01-21 19:30:19 +0000 libc/nss: Ensure that setgroupent(3) actually works as advertised Because the "files" and "compat" implementations failed to set the "stayopen", keyed lookups would close the database handle, contrary to the purpose of setgroupent(3). setpassent(3)'s implementation does not have this bug. PR: 165527 Submitted by: Andrey Simonenko MFC after: 1 month --- lib/libc/gen/getgrent.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/libc/gen/getgrent.c b/lib/libc/gen/getgrent.c index 6abccea30c6b..afb89cab308b 100644 --- a/lib/libc/gen/getgrent.c +++ b/lib/libc/gen/getgrent.c @@ -824,6 +824,7 @@ files_setgrent(void *retval, void *mdata, va_list ap) rewind(st->fp); else if (stayopen) st->fp = fopen(_PATH_GROUP, "re"); + st->stayopen = stayopen; break; case ENDGRENT: if (st->fp != NULL) { @@ -1271,6 +1272,7 @@ compat_setgrent(void *retval, void *mdata, va_list ap) rewind(st->fp); else if (stayopen) st->fp = fopen(_PATH_GROUP, "re"); + st->stayopen = stayopen; set_setent(dtab, mdata); (void)_nsdispatch(NULL, dtab, NSDB_GROUP_COMPAT, "setgrent", compatsrc, 0); _______________________________________________ dev-commits-src-main@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"