summaryrefslogtreecommitdiffstats
path: root/support
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-07-21 14:23:00 -0400
committerSteve Dickson <steved@redhat.com>2011-07-21 14:26:11 -0400
commit1ce0374d445d8a3dbdfb3e9da4c76be9df44666b (patch)
tree648f1f9665a5a049b8db353900c6e319727c31d1 /support
parent0ac600d4766a2e54c6da61148a3266155d36b06a (diff)
downloadnfs-utils-1ce0374d445d8a3dbdfb3e9da4c76be9df44666b.tar.gz
nfs-utils-1ce0374d445d8a3dbdfb3e9da4c76be9df44666b.tar.xz
nfs-utils-1ce0374d445d8a3dbdfb3e9da4c76be9df44666b.zip
Statd should always 'chdir' to its state directory.
s statd can be started by 'mount' which can sometimes be run by a normal user, the current-working-directory could be anything. In partcular it could be in a mounted filesystem. As 'statd' continues running as a daemon it could keep prevent that filesystem from being unmounted. statd does currently 'chdir' to the state directory, but only if the state directory is not owned by root. This is wrong - it should check for root after the chdir, not before. So swap the two if statements around. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'support')
-rw-r--r--support/nsm/file.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/support/nsm/file.c b/support/nsm/file.c
index 98b47bf..a12c753 100644
--- a/support/nsm/file.c
+++ b/support/nsm/file.c
@@ -395,18 +395,18 @@ nsm_drop_privileges(const int pidfd)
return false;
}
- if (st.st_uid == 0) {
- xlog_warn("Running as root. "
- "chown %s to choose different user", nsm_base_dirname);
- return true;
- }
-
if (chdir(nsm_base_dirname) == -1) {
xlog(L_ERROR, "Failed to change working directory to %s: %m",
nsm_base_dirname);
return false;
}
+ if (st.st_uid == 0) {
+ xlog_warn("Running as root. "
+ "chown %s to choose different user", nsm_base_dirname);
+ return true;
+ }
+
/*
* If the pidfile happens to reside on NFS, dropping privileges
* will probably cause us to lose access, even though we are