diff options
Diffstat (limited to 'source4/librpc/rpc/dcerpc_util.c')
-rw-r--r-- | source4/librpc/rpc/dcerpc_util.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source4/librpc/rpc/dcerpc_util.c b/source4/librpc/rpc/dcerpc_util.c index 992368777c..b815f5317d 100644 --- a/source4/librpc/rpc/dcerpc_util.c +++ b/source4/librpc/rpc/dcerpc_util.c @@ -785,7 +785,6 @@ static NTSTATUS dcerpc_pipe_auth(struct dcerpc_pipe *p, const char *password) { NTSTATUS status; - p->conn->flags = binding->flags; /* remember the binding string for possible secondary connections */ @@ -794,10 +793,17 @@ static NTSTATUS dcerpc_pipe_auth(struct dcerpc_pipe *p, if (username && username[0] && (binding->flags & DCERPC_SCHANNEL_ANY)) { status = dcerpc_bind_auth_schannel(p, pipe_uuid, pipe_version, domain, username, password); - } else if (username && username[0] && (binding->flags & DCERPC_AUTH_SPNEGO)) { - status = dcerpc_bind_auth_spnego(p, pipe_uuid, pipe_version, domain, username, password); } else if (username && username[0]) { - status = dcerpc_bind_auth_ntlm(p, pipe_uuid, pipe_version, domain, username, password); + uint8_t auth_type; + if (binding->flags & DCERPC_AUTH_SPNEGO) { + auth_type = DCERPC_AUTH_TYPE_SPNEGO; + } else { + auth_type = DCERPC_AUTH_TYPE_NTLMSSP; + } + + status = dcerpc_bind_auth_password(p, pipe_uuid, pipe_version, + domain, username, password, + auth_type); } else { status = dcerpc_bind_auth_none(p, pipe_uuid, pipe_version); } |