The branch, master has been updated
       via  7638f52 s3: Don't open the dir for stat/attr/acl related mask
      from  b04e8b7 s3: ldap client can return NT_STATUS_OK when an error 
occurs in a paged search.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7638f521456f1c7e615591dff4c403902cd4ddac
Author: Abhidnya Joshi <achir...@in.ibm.com>
Date:   Wed Jan 22 17:02:15 2014 -0800

    s3: Don't open the dir for stat/attr/acl related mask
    
    Signed-off-by: Abhidnya Joshi <achir...@in.ibm.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Christof Schmitt <c...@samba.org>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Thu Jan 23 03:56:35 CET 2014 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/open.c |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 200c1ce..cce8be2 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -3211,19 +3211,30 @@ static NTSTATUS open_directory(connection_struct *conn,
        */
        ZERO_STRUCT(mtimespec);
 
+       if (access_mask & (FILE_LIST_DIRECTORY|
+                          FILE_ADD_FILE|
+                          FILE_ADD_SUBDIRECTORY|
+                          FILE_TRAVERSE|
+                          DELETE_ACCESS|
+                          FILE_DELETE_CHILD)) {
 #ifdef O_DIRECTORY
-       status = fd_open(conn, fsp, O_RDONLY|O_DIRECTORY, 0);
+               status = fd_open(conn, fsp, O_RDONLY|O_DIRECTORY, 0);
 #else
-       /* POSIX allows us to open a directory with O_RDONLY. */
-       status = fd_open(conn, fsp, O_RDONLY, 0);
+               /* POSIX allows us to open a directory with O_RDONLY. */
+               status = fd_open(conn, fsp, O_RDONLY, 0);
 #endif
-       if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(5, ("open_directory: Could not open fd for "
-                       "%s (%s)\n",
-                       smb_fname_str_dbg(smb_dname),
-                       nt_errstr(status)));
-               file_free(req, fsp);
-               return status;
+               if (!NT_STATUS_IS_OK(status)) {
+                       DEBUG(5, ("open_directory: Could not open fd for "
+                               "%s (%s)\n",
+                               smb_fname_str_dbg(smb_dname),
+                               nt_errstr(status)));
+                       file_free(req, fsp);
+                       return status;
+               }
+       } else {
+               fsp->fh->fd = -1;
+               DEBUG(10, ("Not opening Directory %s\n",
+                       smb_fname_str_dbg(smb_dname)));
        }
 
        status = vfs_stat_fsp(fsp);


-- 
Samba Shared Repository

Reply via email to