check_name() not needed in mkdir.
[mat/samba.git] / source3 / smbd / open.c
index 10606788b40abb73e5a0bbae3e55d00f1762bdfa..fd99994ca79873d4bc2f552baca2bbf9a3047740 100644 (file)
@@ -99,7 +99,9 @@ NTSTATUS smbd_check_access_rights(struct connection_struct *conn,
                return NT_STATUS_OK;
        }
 
-       if (access_mask == DELETE_ACCESS && S_ISLNK(smb_fname->st.st_ex_mode)) {
+       if (access_mask == DELETE_ACCESS &&
+                       VALID_STAT(smb_fname->st) &&
+                       S_ISLNK(smb_fname->st.st_ex_mode)) {
                /* We can always delete a symlink. */
                DEBUG(10,("smbd_check_access_rights: not checking ACL "
                        "on DELETE_ACCESS on symlink %s.\n",
@@ -1084,7 +1086,7 @@ static NTSTATUS send_break_message(files_struct *fsp,
 
 static void find_oplock_types(files_struct *fsp,
                                int oplock_request,
-                               struct share_mode_lock *lck,
+                               const struct share_mode_lock *lck,
                                struct share_mode_entry **pp_batch,
                                struct share_mode_entry **pp_ex_or_batch,
                                bool *got_level2,
@@ -1312,7 +1314,7 @@ static void defer_open(struct share_mode_lock *lck,
                exit_server("push_deferred_open_message_smb failed");
        }
        add_deferred_open(lck, req->mid, request_time,
-                         sconn_server_id(req->sconn), state->id);
+                         messaging_server_id(req->sconn->msg_ctx), state->id);
 }
 
 
@@ -1727,7 +1729,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
                        /* Remove the deferred open entry under lock. */
                        remove_deferred_open_entry(
                                state->id, req->mid,
-                               sconn_server_id(req->sconn));
+                               messaging_server_id(req->sconn->msg_ctx));
 
                        /* Ensure we don't reprocess this message. */
                        remove_deferred_open_message_smb(req->sconn, req->mid);
@@ -2500,7 +2502,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
         * records. */
        if (req != NULL) {
                del_deferred_open_entry(lck, req->mid,
-                                       sconn_server_id(req->sconn));
+                                       messaging_server_id(req->sconn->msg_ctx));
        }
        TALLOC_FREE(lck);
 
@@ -2557,11 +2559,6 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
                return NT_STATUS_ACCESS_DENIED;
        }
 
-       status = check_name(conn, smb_dname->base_name);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
-
        if (!parent_dirname(talloc_tos(), smb_dname->base_name, &parent_dir,
                            NULL)) {
                return NT_STATUS_NO_MEMORY;