summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h2
-rw-r--r--source3/include/smb.h3
-rw-r--r--source3/libsmb/clifile.c6
-rw-r--r--source3/rpc_client/cli_pipe.c2
4 files changed, 8 insertions, 5 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 0e326aaf1e..b51b57716b 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -675,7 +675,7 @@ BOOL cli_rename(struct cli_state *cli, char *fname_src, char *fname_dst);
BOOL cli_unlink(struct cli_state *cli, char *fname);
BOOL cli_mkdir(struct cli_state *cli, char *dname);
BOOL cli_rmdir(struct cli_state *cli, char *dname);
-int cli_nt_create(struct cli_state *cli, char *fname);
+int cli_nt_create(struct cli_state *cli, char *fname, uint32 DesiredAccess);
int cli_open(struct cli_state *cli, char *fname, int flags, int share_mode);
BOOL cli_close(struct cli_state *cli, int fnum);
BOOL cli_lock(struct cli_state *cli, int fnum,
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 300fd9872a..1e5d312997 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1076,6 +1076,9 @@ struct bitmap {
#define FILE_WRITE_ATTRIBUTES 0x100
#define FILE_ALL_ATTRIBUTES 0x1FF
+
+/* the desired access to use when opening a pipe */
+#define DESIRED_ACCESS_PIPE 0x2019f
/* Generic access masks & rights. */
#define SPECIFIC_RIGHTS_MASK 0x00FFFFL
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index c23a43f95f..cb492f1539 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -149,7 +149,7 @@ BOOL cli_rmdir(struct cli_state *cli, char *dname)
p = smb_buf(cli->outbuf);
*p++ = 4;
pstrcpy(p,dname);
- unix_to_dos(p,True);
+ unix_to_dos(p,True);
cli_send_smb(cli);
if (!cli_receive_smb(cli)) {
@@ -168,7 +168,7 @@ BOOL cli_rmdir(struct cli_state *cli, char *dname)
/****************************************************************************
open a file
****************************************************************************/
-int cli_nt_create(struct cli_state *cli, char *fname)
+int cli_nt_create(struct cli_state *cli, char *fname, uint32 DesiredAccess)
{
char *p;
@@ -187,7 +187,7 @@ int cli_nt_create(struct cli_state *cli, char *fname)
else
SIVAL(cli->outbuf,smb_ntcreate_Flags, 0);
SIVAL(cli->outbuf,smb_ntcreate_RootDirectoryFid, 0x0);
- SIVAL(cli->outbuf,smb_ntcreate_DesiredAccess, 0x2019f);
+ SIVAL(cli->outbuf,smb_ntcreate_DesiredAccess, DesiredAccess);
SIVAL(cli->outbuf,smb_ntcreate_FileAttributes, 0x0);
SIVAL(cli->outbuf,smb_ntcreate_ShareAccess, 0x03);
SIVAL(cli->outbuf,smb_ntcreate_CreateDisposition, 0x01);
diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c
index 3a875cc46b..7ca274efc3 100644
--- a/source3/rpc_client/cli_pipe.c
+++ b/source3/rpc_client/cli_pipe.c
@@ -1169,7 +1169,7 @@ BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name)
int fnum;
if (cli->capabilities & CAP_NT_SMBS) {
- if ((fnum = cli_nt_create(cli, &(pipe_name[5]))) == -1) {
+ if ((fnum = cli_nt_create(cli, &(pipe_name[5], DESIRED_ACCESS_PIPE))) == -1) {
DEBUG(0,("cli_nt_session_open: cli_nt_create failed on pipe %s to machine %s. Error was %s\n",
&(pipe_name[5]), cli->desthost, cli_errstr(cli)));
return False;