- rsyserr(FERROR, errno, "setgid %d failed", (int) gid);
- io_printf(fd,"@ERROR: setgid failed\n");
+ rsyserr(FLOG, errno, "setgid %d failed", (int)gid);
+ io_printf(f_out, "@ERROR: setgid failed\n");
+ return -1;
+ }
+#ifdef HAVE_SETGROUPS
+ /* Get rid of any supplementary groups this process
+ * might have inheristed. */
+ if (setgroups(1, &gid)) {
+ rsyserr(FLOG, errno, "setgroups failed");
+ io_printf(f_out, "@ERROR: setgroups failed\n");