From 48512193338663df5dc4cd52179bc94337eb7113 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 4 Nov 2011 15:39:55 -0700 Subject: [PATCH] Add const to the smb_filename argument of smbd_check_access_rights(). --- source3/smbd/file_access.c | 18 +++++------------- source3/smbd/open.c | 4 ++-- source3/smbd/proto.h | 4 ++-- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/source3/smbd/file_access.c b/source3/smbd/file_access.c index 74855649ea2..c2203673f3d 100644 --- a/source3/smbd/file_access.c +++ b/source3/smbd/file_access.c @@ -80,7 +80,7 @@ bool can_access_file_acl(struct connection_struct *conn, ****************************************************************************/ bool can_delete_file_in_directory(connection_struct *conn, - struct smb_filename *smb_fname) + const struct smb_filename *smb_fname) { TALLOC_CTX *ctx = talloc_tos(); char *dname = NULL; @@ -130,18 +130,10 @@ bool can_delete_file_in_directory(connection_struct *conn, /* sticky bit means delete only by owner of file or by root or * by owner of directory. */ if (smb_fname_parent->st.st_ex_mode & S_ISVTX) { - if(SMB_VFS_STAT(conn, smb_fname) != 0) { - if (errno == ENOENT) { - /* If the file doesn't already exist then - * yes we'll be able to delete it. */ - ret = true; - goto out; - } - DEBUG(10,("can_delete_file_in_directory: can't " - "stat file %s (%s)", - smb_fname_str_dbg(smb_fname), - strerror(errno) )); - ret = false; + if (!VALID_STAT(smb_fname->st)) { + /* If the file doesn't already exist then + * yes we'll be able to delete it. */ + ret = true; goto out; } diff --git a/source3/smbd/open.c b/source3/smbd/open.c index bd022ecd599..2f79908b626 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -44,7 +44,7 @@ struct deferred_open_record { ****************************************************************************/ static bool parent_override_delete(connection_struct *conn, - struct smb_filename *smb_fname, + const struct smb_filename *smb_fname, uint32_t access_mask, uint32_t rejected_mask) { @@ -61,7 +61,7 @@ static bool parent_override_delete(connection_struct *conn, ****************************************************************************/ NTSTATUS smbd_check_access_rights(struct connection_struct *conn, - struct smb_filename *smb_fname, + const struct smb_filename *smb_fname, uint32_t access_mask) { /* Check if we have rights to open. */ diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index ff56b15dd0b..0b7c28fb911 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -307,7 +307,7 @@ bool can_access_file_acl(struct connection_struct *conn, const struct smb_filename *smb_fname, uint32_t access_mask); bool can_delete_file_in_directory(connection_struct *conn, - struct smb_filename *smb_fname); + const struct smb_filename *smb_fname); bool can_access_file_data(connection_struct *conn, const struct smb_filename *smb_fname, uint32 access_mask); @@ -581,7 +581,7 @@ void reply_nttranss(struct smb_request *req); /* The following definitions come from smbd/open.c */ NTSTATUS smbd_check_access_rights(struct connection_struct *conn, - struct smb_filename *smb_fname, + const struct smb_filename *smb_fname, uint32_t access_mask); NTSTATUS fd_close(files_struct *fsp); void change_file_owner_to_parent(connection_struct *conn, -- 2.11.4.GIT