summaryrefslogtreecommitdiff
path: root/source3/smbd/open.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-11-28 05:03:37 +0000
committerJeremy Allison <jra@samba.org>2001-11-28 05:03:37 +0000
commita17867af97a258b9d22d6216d8de887174eaa707 (patch)
tree901d887da392a34d11df54c61a3bcfdae64937d0 /source3/smbd/open.c
parent1a50b36d978416e7c08423296db351e434bdea50 (diff)
downloadsamba-a17867af97a258b9d22d6216d8de887174eaa707.tar.gz
samba-a17867af97a258b9d22d6216d8de887174eaa707.tar.bz2
samba-a17867af97a258b9d22d6216d8de887174eaa707.zip
Ensure the CAN_WRITE is checked and prevents O_CREAT and O_TRUNC from
being set. Also prevent an open on a file on a readonly share from setting delete on close. Jeremy. (This used to be commit 1f3dcd99bdd36cd3ff492394e80c3e2037a9aa48)
Diffstat (limited to 'source3/smbd/open.c')
-rw-r--r--source3/smbd/open.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 487a8a71a8..1e34e0c9fe 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -683,10 +683,10 @@ files_struct *open_file_shared(connection_struct *conn,char *fname, SMB_STRUCT_S
return NULL;
}
- if (GET_FILE_CREATE_DISPOSITION(ofun) == FILE_CREATE_IF_NOT_EXIST)
+ if (CAN_WRITE(conn) && (GET_FILE_CREATE_DISPOSITION(ofun) == FILE_CREATE_IF_NOT_EXIST))
flags2 |= O_CREAT;
- if (GET_FILE_OPEN_DISPOSITION(ofun) == FILE_EXISTS_TRUNCATE)
+ if (CAN_WRITE(conn) && (GET_FILE_OPEN_DISPOSITION(ofun) == FILE_EXISTS_TRUNCATE))
flags2 |= O_TRUNC;
if (GET_FILE_OPEN_DISPOSITION(ofun) == FILE_EXISTS_FAIL)