summaryrefslogtreecommitdiff
path: root/source4/libcli/util/clilsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/libcli/util/clilsa.c')
-rw-r--r--source4/libcli/util/clilsa.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/source4/libcli/util/clilsa.c b/source4/libcli/util/clilsa.c
index 2720a50c83..812f953ce8 100644
--- a/source4/libcli/util/clilsa.c
+++ b/source4/libcli/util/clilsa.c
@@ -32,6 +32,7 @@
#include "librpc/gen_ndr/ndr_lsa.h"
#include "librpc/gen_ndr/ndr_lsa_c.h"
#include "libcli/util/clilsa.h"
+#include "libcli/smb/smbXcli_base.h"
struct smblsa_state {
struct dcerpc_pipe *pipe;
@@ -69,6 +70,7 @@ static NTSTATUS smblsa_connect(struct smbcli_state *cli)
/* connect to IPC$ */
tcon.generic.level = RAW_TCON_TCONX;
tcon.tconx.in.flags = TCONX_FLAG_EXTENDED_RESPONSE;
+ tcon.tconx.in.flags |= TCONX_FLAG_EXTENDED_SIGNATURES;
tcon.tconx.in.password = data_blob(NULL, 0);
tcon.tconx.in.path = "ipc$";
tcon.tconx.in.device = "IPC";
@@ -79,6 +81,10 @@ static NTSTATUS smblsa_connect(struct smbcli_state *cli)
}
lsa->ipc_tree->tid = tcon.tconx.out.tid;
+ if (tcon.tconx.out.options & SMB_EXTENDED_SIGNATURES) {
+ smb1cli_session_protect_session_key(cli->session->smbXcli);
+ }
+
lsa->pipe = dcerpc_pipe_init(lsa, cli->transport->ev);
if (lsa->pipe == NULL) {
talloc_free(lsa);