From f73e7b9f69835d483cee95e6a20b6307b9d16b77 Mon Sep 17 00:00:00 2001 From: neilbrown Date: Thu, 6 Oct 2005 05:20:19 +0000 Subject: Assorted changes from Steve Dickson --- utils/statd/statd.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'utils/statd/statd.c') diff --git a/utils/statd/statd.c b/utils/statd/statd.c index 48362c0..f61914d 100644 --- a/utils/statd/statd.c +++ b/utils/statd/statd.c @@ -22,6 +22,7 @@ #include #include "statd.h" #include "version.h" +#include "nfslib.h" /* Socket operations */ #include @@ -194,8 +195,10 @@ static void drop_privs(void) struct stat st; if (stat(SM_DIR, &st) == -1 && - stat(DIR_BASE, &st) == -1) + stat(DIR_BASE, &st) == -1) { st.st_uid = 0; + st.st_gid = 0; + } if (st.st_uid == 0) { note(N_WARNING, "statd running as root. chown %s to choose different user\n", @@ -285,6 +288,7 @@ int main (int argc, char **argv) } break; case 'n': /* Specify local hostname */ + run_mode |= STATIC_HOSTNAME; MY_NAME = xstrdup(optarg); break; case 'P': @@ -400,14 +404,12 @@ int main (int argc, char **argv) } } tempfd = open("/dev/null", O_RDWR); - close(0); dup2(tempfd, 0); - close(1); dup2(tempfd, 1); - close(2); dup2(tempfd, 2); - fdmax = sysconf (_SC_OPEN_MAX); - for (filedes = 3; filedes < fdmax; filedes++) - if (filedes != pipefds[1]) - close (filedes); - + dup2(tempfd, 0); + dup2(tempfd, 1); + dup2(tempfd, 2); + dup2(pipefds[1], 3); + pipefds[1] = 3; + closeall(4); } /* Child. */ -- cgit