From a33f4f0d2afe28ca0e3ab6c9ecfcdbaa267a7fbe Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 11 Oct 2005 04:25:47 +0000 Subject: [PATCH] r10885: Fix bug where read-only share files are always seen as read-only. Noticed by Andrew Bartlett. Jeremy --- source/smbd/dosmode.c | 2 +- source/smbd/posix_acls.c | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/source/smbd/dosmode.c b/source/smbd/dosmode.c index efbd5f04cb9..6aee6ba426c 100644 --- a/source/smbd/dosmode.c +++ b/source/smbd/dosmode.c @@ -479,7 +479,7 @@ int file_utime(connection_struct *conn, const char *fname, struct utimbuf *times */ /* Check if we have write access. */ - if (can_write_to_file(conn, fname, &sbuf)) { + if (CAN_WRITE(conn) && can_write_to_file(conn, fname, &sbuf)) { /* We are allowed to become root and change the filetime. */ become_root(); ret = SMB_VFS_UTIME(conn,fname, times); diff --git a/source/smbd/posix_acls.c b/source/smbd/posix_acls.c index f1c9426676a..818bf95b3f9 100644 --- a/source/smbd/posix_acls.c +++ b/source/smbd/posix_acls.c @@ -4149,16 +4149,13 @@ BOOL can_delete_file_in_directory(connection_struct *conn, const char *fname) /**************************************************************************** Actually emulate the in-kernel access checking for write access. We need this to successfully check for ability to write for dos filetimes. + Note this doesn't take into account share write permissions. ****************************************************************************/ BOOL can_write_to_file(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf) { int ret; - if (!CAN_WRITE(conn)) { - return False; - } - if (current_user.uid == 0 || conn->admin_user) { /* I'm sorry sir, I didn't know you were root... */ return True; -- 2.34.1