X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fexec.c;h=b8b538b8c765d1f09ea5312b39e384b11306c92b;hb=b5c5890955fa19651ad8b3f48d99364d270a0d8f;hp=d9f2d8ce26c60bfc9de60b45fe47a46dd65ac560;hpb=e6fc1600ee7bcde75c95db9b1f617caf78fc4c6a;p=collectd.git diff --git a/src/exec.c b/src/exec.c index d9f2d8ce..b8b538b8 100644 --- a/src/exec.c +++ b/src/exec.c @@ -178,6 +178,25 @@ static void exec_child (program_list_t *pl) } } /* if (pl->group == NULL) */ +#if HAVE_SETGROUPS + if (getuid () == 0) + { + gid_t glist[2]; + size_t glist_len; + + glist[0] = gid; + glist_len = 1; + + if (gid != egid) + { + glist[1] = egid; + glist_len = 2; + } + + setgroups (glist_len, glist); + } +#endif /* HAVE_SETGROUPS */ + status = setgid (gid); if (status != 0) { @@ -295,6 +314,7 @@ static void *exec_read_one (void *arg) ERROR ("exec plugin: fdopen (%i) failed: %s", fd, sstrerror (errno, errbuf, sizeof (errbuf))); kill (pl->pid, SIGTERM); + pl->pid = 0; close (fd); pthread_exit ((void *) 1); }