#include "librpc/gen_ndr/ndr_nbt.h"
#include "param/param.h"
#include "lib/util/util_net.h"
+#include "libcli/smb/smbXcli_base.h"
/* the stages of this call */
enum connect_stage {CONNECT_SOCKET,
status = smb_raw_tcon_recv(state->req, c, state->io_tcon);
NT_STATUS_NOT_OK_RETURN(status);
+ if (state->io_tcon->tconx.out.options & SMB_EXTENDED_SIGNATURES) {
+ smb1cli_session_protect_session_key(io->out.tree->session->smbXcli);
+ }
+
io->out.tree->tid = state->io_tcon->tconx.out.tid;
if (state->io_tcon->tconx.out.dev_type) {
io->out.tree->device = talloc_strdup(io->out.tree,
/* connect to a share using a tree connect */
state->io_tcon->generic.level = RAW_TCON_TCONX;
- state->io_tcon->tconx.in.flags = 0;
+ state->io_tcon->tconx.in.flags = TCONX_FLAG_EXTENDED_RESPONSE;
state->io_tcon->tconx.in.password = data_blob(NULL, 0);
state->io_tcon->tconx.in.path = talloc_asprintf(state->io_tcon,
* have been given a uid in the NTLMSSP_CHALLENGE reply. This
* would lead to an invalid uid in the anonymous fallback */
state->session->vuid = 0;
- data_blob_free(&state->session->user_session_key);
talloc_free(state->session->gensec);
state->session->gensec = NULL;
/* connect to a share using a tree connect */
state->io_tcon->generic.level = RAW_TCON_TCONX;
- state->io_tcon->tconx.in.flags = 0;
+ state->io_tcon->tconx.in.flags = TCONX_FLAG_EXTENDED_RESPONSE;
+ state->io_tcon->tconx.in.flags |= TCONX_FLAG_EXTENDED_SIGNATURES;
state->io_tcon->tconx.in.password = data_blob(NULL, 0);
state->io_tcon->tconx.in.path = talloc_asprintf(state->io_tcon,
state->subreq = smb_raw_negotiate_send(state,
state->transport->ev,
state->transport,
- io->in.options.max_protocol);
+ state->transport->options.min_protocol,
+ state->transport->options.max_protocol);
NT_STATUS_HAVE_NO_MEMORY(state->subreq);
tevent_req_set_callback(state->subreq, subreq_handler, c);
state->stage = CONNECT_NEGPROT;