summaryrefslogtreecommitdiff
path: root/source3/libsmb
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libsmb')
-rw-r--r--source3/libsmb/clifile.c5
-rw-r--r--source3/libsmb/clisymlink.c6
-rw-r--r--source3/libsmb/proto.h1
-rw-r--r--source3/libsmb/pylibsmb.c3
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;
}