]> git.ipfire.org Git - thirdparty/rsync.git/commitdiff
Add configure option to set max daemon gid list.
authorWayne Davison <wayned@samba.org>
Mon, 24 Aug 2015 17:07:43 +0000 (10:07 -0700)
committerWayne Davison <wayned@samba.org>
Mon, 24 Aug 2015 17:09:57 +0000 (10:09 -0700)
Fixes bug 11456.

NEWS
clientserver.c
configure.ac

diff --git a/NEWS b/NEWS
index b4e92f40336ab9596125adbe5407056a2349d18a..9a3ddd5795707b94d39e18dcb39fdfebadedecf6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -31,6 +31,7 @@ Changes since 3.1.1:
 
   DEVELOPER RELATED:
 
+    - Added --with-max-daemon-gid=NUM option to configure.
     - Fixed a bug with the Makefile's use of INSTALL_STRIP.
     - Improve a test in the suite that could get an erroneous timestamp error.
     - Tweaks for newer versions of git in the packaging tools.
index 3f720b02d542075e8c06d71af24cd17dc7b2a834..cf602a179d5342edc097c0b29add34a1e2503769 100644 (file)
@@ -60,8 +60,6 @@ extern char *iconv_opt;
 extern iconv_t ic_send, ic_recv;
 #endif
 
-#define MAX_GID_LIST 32
-
 char *auth_user;
 int read_only = 0;
 int module_id = -1;
@@ -81,7 +79,7 @@ static int rl_nulls = 0;
 static struct sigaction sigact;
 #endif
 
-static gid_t gid_list[MAX_GID_LIST];
+static gid_t gid_list[MAX_DAEMON_GID_LIST];
 static int gid_count = 0;
 
 /* Used when "reverse lookup" is off. */
@@ -444,7 +442,7 @@ static int add_a_group(int f_out, const char *gname)
                io_printf(f_out, "@ERROR: invalid gid %s\n", gname);
                return -1;
        }
-       if (gid_count == MAX_GID_LIST) {
+       if (gid_count == MAX_DAEMON_GID_LIST) {
                rprintf(FLOG, "Too many groups specified via gid parameter.\n");
                io_printf(f_out, "@ERROR: too many groups\n");
                return -1;
@@ -457,7 +455,7 @@ static int add_a_group(int f_out, const char *gname)
 static int want_all_groups(int f_out, uid_t uid)
 {
        const char *err;
-       gid_count = MAX_GID_LIST;
+       gid_count = MAX_DAEMON_GID_LIST;
        if ((err = getallgroups(uid, gid_list, &gid_count)) != NULL) {
                rsyserr(FLOG, errno, "%s", err);
                io_printf(f_out, "@ERROR: %s\n", err);
index 3aca2a1003b1e4e5470e895ff7e8f4d56eba1094..89753667816d16743375927e7f208586b44e0e25 100644 (file)
@@ -98,6 +98,14 @@ AC_ARG_WITH(rsync-path,
 
 AC_DEFINE_UNQUOTED(RSYNC_PATH, "$RSYNC_PATH", [location of rsync on remote machine])
 
+AC_ARG_WITH(max-daemon-gid,
+       AS_HELP_STRING([--with-max-daemon-gid=NUM],
+                      [set maximum number of GIDs in the daemon "gid=LIST" config item (default: 32)]),
+                      [ MAX_DAEMON_GID_LIST=$with_max_daemon_gid ],
+                      [ MAX_DAEMON_GID_LIST=32 ])
+
+AC_DEFINE_UNQUOTED(MAX_DAEMON_GID_LIST, $MAX_DAEMON_GID_LIST, [maximum GIDs in a daemon module gid list])
+
 AC_ARG_WITH(rsyncd-conf,
        AS_HELP_STRING([--with-rsyncd-conf=PATH],[set configuration file for rsync server to PATH (default: /etc/rsyncd.conf)]),
        [ if test ! -z "$with_rsyncd_conf" ; then