r6234: Fix for possible root squash nfs bugs from psz@maths.usyd.edu.au
authorJeremy Allison <jra@samba.org>
Thu, 7 Apr 2005 18:27:28 +0000 (18:27 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:56:31 +0000 (10:56 -0500)
Jeremy.
(This used to be commit dbf021a2e04e74dd7f072c927a34043fd8c3ae30)

source3/smbd/oplock.c
source3/smbd/vfs.c

index 858092407f85daef129b83d033b74db30456bebf..e6af12cd8146abc1d997de80a47f2b05d6f6b2ce 100644 (file)
@@ -806,6 +806,12 @@ static BOOL oplock_break(SMB_DEV_T dev, SMB_INO_T inode, unsigned long file_id,
        saved_vuid = current_user.vuid;
        saved_fsp_conn = fsp->conn;
        change_to_root_user();
+       /*
+        * Initialize saved_dir to something sensible: vfs_GetWd may not work well
+        * for root: the directory may be NFS-mounted and exported with root_squash
+        * (so has no root access).
+        */
+       pstrcpy(saved_dir,saved_fsp_conn->connectpath);
        vfs_GetWd(saved_fsp_conn,saved_dir);
        /* Save the chain fnum. */
        file_chain_save();
index 34671b8efc6f9faf6cf1fc1be4f998ae26d93ac8..28441c91abc970309677a77dac9a769621808da1 100644 (file)
@@ -731,7 +731,9 @@ char *vfs_GetWd(connection_struct *conn, char *path)
                in trouble :-) */
 
        if (SMB_VFS_STAT(conn, ".",&st) == -1) {
-               DEBUG(0,("Very strange, couldn't stat \".\" path=%s\n", path));
+               /* Known to fail for root: the directory may be
+                * NFS-mounted and exported with root_squash (so has no root access). */
+               DEBUG(1,("vfs_GetWd: couldn't stat \".\" path=%s error %s (NFS problem ?)\n", path, strerror(errno) ));
                return(SMB_VFS_GETWD(conn,path));
        }