diff options
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/clifile.c | 5 | ||||
-rw-r--r-- | source3/libsmb/clisymlink.c | 6 | ||||
-rw-r--r-- | source3/libsmb/proto.h | 1 | ||||
-rw-r--r-- | source3/libsmb/pylibsmb.c | 3 |
4 files changed, 10 insertions, 5 deletions
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 1694af502b9..6defa38fdee 100644 --- a/source3/libsmb/clifile.c +++ b/source3/libsmb/clifile.c @@ -2099,11 +2099,11 @@ struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx, uint32_t share_access, uint32_t create_disposition, uint32_t create_options, + uint32_t impersonation_level, uint8_t security_flags) { struct tevent_req *req, *subreq; struct cli_ntcreate_state *state; - uint32_t impersonation_level = SMB2_IMPERSONATION_IMPERSONATION; req = tevent_req_create(mem_ctx, &state, struct cli_ntcreate_state); if (req == NULL) { @@ -2197,6 +2197,7 @@ NTSTATUS cli_ntcreate(struct cli_state *cli, TALLOC_CTX *frame = talloc_stackframe(); struct tevent_context *ev; struct tevent_req *req; + uint32_t ImpersonationLevel = SMB2_IMPERSONATION_IMPERSONATION; NTSTATUS status = NT_STATUS_NO_MEMORY; if (smbXcli_conn_has_async_calls(cli->conn)) { @@ -2215,7 +2216,7 @@ NTSTATUS cli_ntcreate(struct cli_state *cli, req = cli_ntcreate_send(frame, ev, cli, fname, CreatFlags, DesiredAccess, FileAttributes, ShareAccess, CreateDisposition, CreateOptions, - SecurityFlags); + ImpersonationLevel, SecurityFlags); if (req == NULL) { goto fail; } diff --git a/source3/libsmb/clisymlink.c b/source3/libsmb/clisymlink.c index 54435e468cd..1330752358d 100644 --- a/source3/libsmb/clisymlink.c +++ b/source3/libsmb/clisymlink.c @@ -72,7 +72,8 @@ struct tevent_req *cli_symlink_send(TALLOC_CTX *mem_ctx, FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_NONE, FILE_CREATE, FILE_OPEN_REPARSE_POINT|FILE_SYNCHRONOUS_IO_NONALERT| - FILE_NON_DIRECTORY_FILE, 0); + FILE_NON_DIRECTORY_FILE, + SMB2_IMPERSONATION_IMPERSONATION, 0); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } @@ -274,7 +275,8 @@ struct tevent_req *cli_readlink_send(TALLOC_CTX *mem_ctx, subreq = cli_ntcreate_send( state, ev, cli, fname, 0, FILE_READ_ATTRIBUTES | FILE_READ_EA, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - FILE_OPEN, FILE_OPEN_REPARSE_POINT, 0); + FILE_OPEN, FILE_OPEN_REPARSE_POINT, + SMB2_IMPERSONATION_IMPERSONATION, 0); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h index 941d154b5b5..bfad4dcc011 100644 --- a/source3/libsmb/proto.h +++ b/source3/libsmb/proto.h @@ -397,6 +397,7 @@ struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx, uint32_t ShareAccess, uint32_t CreateDisposition, uint32_t CreateOptions, + uint32_t ImpersonationLevel, uint8_t SecurityFlags); NTSTATUS cli_ntcreate_recv(struct tevent_req *req, uint16_t *pfnum, diff --git a/source3/libsmb/pylibsmb.c b/source3/libsmb/pylibsmb.c index b6cff0bf1be..3f84d34e1fd 100644 --- a/source3/libsmb/pylibsmb.c +++ b/source3/libsmb/pylibsmb.c @@ -666,6 +666,7 @@ static PyObject *py_cli_create(struct py_cli_state *self, PyObject *args, unsigned ShareAccess = 0; unsigned CreateDisposition = FILE_OPEN; unsigned CreateOptions = 0; + unsigned ImpersonationLevel = SMB2_IMPERSONATION_IMPERSONATION; unsigned SecurityFlags = 0; uint16_t fnum; struct tevent_req *req; @@ -687,7 +688,7 @@ static PyObject *py_cli_create(struct py_cli_state *self, PyObject *args, req = cli_ntcreate_send(NULL, self->ev, self->cli, fname, CreateFlags, DesiredAccess, FileAttributes, ShareAccess, CreateDisposition, CreateOptions, - SecurityFlags); + ImpersonationLevel, SecurityFlags); if (!py_tevent_req_wait_exc(self, req)) { return NULL; } |