smbd: Remove "file_existed" handling from open_mode_check
authorVolker Lendecke <vl@samba.org>
Thu, 26 Sep 2013 21:32:09 +0000 (14:32 -0700)
committerMichael Adam <obnox@samba.org>
Tue, 15 Oct 2013 22:50:13 +0000 (00:50 +0200)
No clue what this does. In open_directory, "dir_existed" is not used after
open_mode_check. In open_file_ntcreate it's used, but I can't think of a case
right now where we would find a formerly nonexisting file to exist suddenly.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
source3/smbd/open.c

index 670de5dff919fe1c558dfede033defde07896997..aaa42b34a865a8af8c67a591a8d19151ece09aae 100644 (file)
@@ -1114,8 +1114,7 @@ static bool has_delete_on_close(struct share_mode_lock *lck,
 static NTSTATUS open_mode_check(connection_struct *conn,
                                struct share_mode_lock *lck,
                                uint32 access_mask,
-                               uint32 share_access,
-                               bool *file_existed)
+                               uint32 share_access)
 {
        int i;
 
@@ -1156,16 +1155,10 @@ static NTSTATUS open_mode_check(connection_struct *conn,
                                continue;
                        }
 
-                       *file_existed = true;
-
                        return NT_STATUS_SHARING_VIOLATION;
                }
        }
 
-       if (lck->data->num_share_modes != 0) {
-               *file_existed = true;
-       }
-
        return NT_STATUS_OK;
 }
 
@@ -2427,8 +2420,20 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
        }
 
        status = open_mode_check(conn, lck,
-                                access_mask, share_access,
-                                &file_existed);
+                                access_mask, share_access);
+
+
+       if (NT_STATUS_EQUAL(status, NT_STATUS_SHARING_VIOLATION) ||
+           (lck->data->num_share_modes > 0)) {
+               /*
+                * This comes from ancient times out of open_mode_check. I
+                * have no clue whether this is still necessary. I can't think
+                * of a case where this would actually matter further down in
+                * this function. I leave it here for further investigation
+                * :-)
+                */
+               file_existed = true;
+       }
 
        if (NT_STATUS_IS_OK(status)) {
                /* We might be going to allow this open. Check oplock
@@ -3159,8 +3164,7 @@ static NTSTATUS open_directory(connection_struct *conn,
        }
 
        status = open_mode_check(conn, lck,
-                               access_mask, share_access,
-                                &dir_existed);
+                                access_mask, share_access);
 
        if (!NT_STATUS_IS_OK(status)) {
                TALLOC_FREE(lck);