diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/smb.h | 1 | ||||
-rw-r--r-- | source3/smbd/nttrans.c | 12 |
2 files changed, 11 insertions, 2 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h index c5284751d3..374b820a37 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -1085,6 +1085,7 @@ struct bitmap { #define REQUEST_OPLOCK 2 #define REQUEST_BATCH_OPLOCK 4 #define OPEN_DIRECTORY 8 +#define EXTENDED_RESPONSE_REQUIRED 0x10 /* ShareAccess field. */ #define FILE_SHARE_NONE 0 /* Cannot be used in bitmask. */ diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index a432e2aaea..8c3d1eefba 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -974,9 +974,12 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib SOFF_T(p, 0, get_allocation_size(fsp,&sbuf)); p += 8; SOFF_T(p,0,file_len); - p += 12; + p += 8; + if (flags & EXTENDED_RESPONSE_REQUIRED) + SSVAL(p,2,0x7); + p += 4; SCVAL(p,0,fsp->is_directory ? 1 : 0); - + DEBUG(5,("reply_ntcreate_and_X: fnum = %d, open name = %s\n", fsp->fnum, fsp->fsp_name)); result = chain_reply(inbuf,outbuf,length,bufsize); @@ -1454,6 +1457,11 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o SOFF_T(p, 0, get_allocation_size(fsp,&sbuf)); p += 8; SOFF_T(p,0,file_len); + p += 8; + if (flags & EXTENDED_RESPONSE_REQUIRED) + SSVAL(p,2,0x7); + p += 4; + SCVAL(p,0,fsp->is_directory ? 1 : 0); DEBUG(5,("call_nt_transact_create: open name = %s\n", fname)); |