diff options
author | Gaudenz Steinlin <gaudenz@debian.org> | 2013-09-09 08:33:48 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2013-11-01 06:38:53 +0100 |
commit | c8b8247f70607073af241f4aba682f09ccb3e76d (patch) | |
tree | 78b3d0e7d04145a074dbb5edf84b196033556b2f | |
parent | 3cc59ec3be6c9398fdb0cd7e20b626f2f423b4a7 (diff) | |
download | tinyproxy-c8b8247f70607073af241f4aba682f09ccb3e76d.tar.gz tinyproxy-c8b8247f70607073af241f4aba682f09ccb3e76d.zip |
[BB#115] Drop supplementary groups
Supplementary groups are inherited from the calling process. Drop all
supplementary groups if the "Group" configuration directive is set to
change to a different user. Otherwise the process may have more rights
than expected.
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/main.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index 303fc7b..377e204 100644 --- a/configure.ac +++ b/configure.ac @@ -203,7 +203,7 @@ AC_FUNC_REALLOC AC_CHECK_FUNCS([gethostname inet_ntoa memchr memset select socket strcasecmp \ strchr strdup strerror strncasecmp strpbrk strstr strtol]) AC_CHECK_FUNCS([isascii memcpy setrlimit ftruncate regcomp regexec]) -AC_CHECK_FUNCS([strlcpy strlcat]) +AC_CHECK_FUNCS([strlcpy strlcat setgroups]) dnl Enable extra warnings @@ -296,6 +296,16 @@ change_user (const char *program) exit (EX_NOPERM); } +#ifdef HAVE_SETGROUPS + /* Drop all supplementary groups, otherwise these are inherited from the calling process */ + if (setgroups (0, NULL) < 0) { + fprintf (stderr, + "%s: Unable to drop supplementary groups.\n", + program); + exit (EX_NOPERM); + } +#endif + log_message (LOG_INFO, "Now running as group \"%s\".", config.group); } |