diff options
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/include/smb.h | 3 | ||||
-rw-r--r-- | source3/libsmb/clifile.c | 6 | ||||
-rw-r--r-- | source3/rpc_client/cli_pipe.c | 2 |
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; |