summaryrefslogtreecommitdiff
path: root/source3/smbd/reply.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2005-04-02 00:13:27 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:56:27 -0500
commit1045c786246658f5d8e289d46cb4bdfc87655c71 (patch)
tree4e6594a4b38cf130729de12e36df3b683b70b87e /source3/smbd/reply.c
parent0557c6cba2a21c9df547fbc8ff4db2899bc1c171 (diff)
downloadsamba-1045c786246658f5d8e289d46cb4bdfc87655c71.tar.gz
samba-1045c786246658f5d8e289d46cb4bdfc87655c71.tar.bz2
samba-1045c786246658f5d8e289d46cb4bdfc87655c71.zip
r6174: Fixup T2 open call - we were returning 2 bytes short.
Jeremy. (This used to be commit 0c7de7615bf0edbb36a3afee445db13a71e26d2e)
Diffstat (limited to 'source3/smbd/reply.c')
-rw-r--r--source3/smbd/reply.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index aef9755122..22cb599195 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -1295,7 +1295,17 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
END_PROFILE(SMBopenX);
return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
}
-
+
+ /* Strange open mode mapping. */
+ if (smb_ofun == 0) {
+ if (GET_OPEN_MODE(smb_mode) == DOS_OPEN_EXEC) {
+ smb_ofun = FILE_EXISTS_FAIL | FILE_CREATE_IF_NOT_EXIST;
+ } else {
+ END_PROFILE(SMBopenX);
+ return ERROR_FORCE_DOS(ERRDOS, ERRbadaccess);
+ }
+ }
+
fsp = open_file_shared(conn,fname,&sbuf,smb_mode,smb_ofun,(uint32)smb_attr,
oplock_request, &rmode,&smb_action);