check_name() not needed in mkdir.
[mat/samba.git] / source3 / smbd / open.c
index 86291ae714e10d57a8c42995cd43d2772128b45d..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",
@@ -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;