You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by co...@hyperreal.org on 1999/05/05 22:43:03 UTC
cvs commit: apache-1.3/src/main http_main.c
coar 99/05/05 13:43:02
Modified: src CHANGES
src/main http_main.c
Log:
Fix the grouplist problem caused by setgid() on some systems.
PR: 2579
Submitted by: Rob Saccoccio <ro...@InfiniteTechnology.com>
Reviewed by: Ken Coar
Revision Changes Path
1.1349 +5 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1348
retrieving revision 1.1349
diff -u -r1.1348 -r1.1349
--- CHANGES 1999/05/05 20:18:04 1.1348
+++ CHANGES 1999/05/05 20:42:55 1.1349
@@ -1,5 +1,10 @@
Changes with Apache 1.3.7
+ *) Do setgid() before initgroups() in http_main; some platforms
+ zap the grouplist when setgid() is called. This was fixed in
+ suexec earlier, but the main httpd code missed the change.
+ [Rob Saccoccio <ro...@InfiniteTechnology.com>] PR#2579
+
*) Add recognition of .tgz as a gzipped tarchive.
[Bertrand de Singly <be...@polytechnique.fr>] PR#2364
1.435 +13 -8 apache-1.3/src/main/http_main.c
Index: http_main.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/http_main.c,v
retrieving revision 1.434
retrieving revision 1.435
diff -u -r1.434 -r1.435
--- http_main.c 1999/05/04 11:21:10 1.434
+++ http_main.c 1999/05/05 20:42:58 1.435
@@ -2993,6 +2993,17 @@
#if !defined(OS2) && !defined(TPF)
/* OS/2 and TPF don't support groups. */
+ /*
+ * Set the GID before initgroups(), since on some platforms
+ * setgid() is known to zap the group list.
+ */
+ if (setgid(ap_group_id) == -1) {
+ ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
+ "setgid: unable to set group id to Group %u",
+ (unsigned)ap_group_id);
+ clean_child_exit(APEXIT_CHILDFATAL);
+ }
+
/* Reset `groups' attributes. */
if (initgroups(name, ap_group_id) == -1) {
@@ -3006,15 +3017,9 @@
ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
"getgroups: unable to get group list");
clean_child_exit(APEXIT_CHILDFATAL);
- }
-#endif
- if (setgid(ap_group_id) == -1) {
- ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
- "setgid: unable to set group id to Group %u",
- (unsigned)ap_group_id);
- clean_child_exit(APEXIT_CHILDFATAL);
}
-#endif
+#endif /* MULTIPLE_GROUPS */
+#endif /* !defined(OS2) && !defined(TPF) */
}
#endif /* ndef WIN32 */
}