diff options
-rw-r--r-- | source4/librpc/idl/netlogon.idl | 2 | ||||
-rw-r--r-- | source4/librpc/rpc/dcerpc_schannel.c | 3 | ||||
-rw-r--r-- | source4/librpc/rpc/dcerpc_util.c | 10 |
3 files changed, 14 insertions, 1 deletions
diff --git a/source4/librpc/idl/netlogon.idl b/source4/librpc/idl/netlogon.idl index c981f61db4..c98fa8f1e6 100644 --- a/source4/librpc/idl/netlogon.idl +++ b/source4/librpc/idl/netlogon.idl @@ -9,7 +9,7 @@ [ uuid("12345678-1234-abcd-ef00-01234567cffb"), version(1.0), - endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:"), + endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"), pointer_default(unique) ] diff --git a/source4/librpc/rpc/dcerpc_schannel.c b/source4/librpc/rpc/dcerpc_schannel.c index f53d77647a..b7eac60dbc 100644 --- a/source4/librpc/rpc/dcerpc_schannel.c +++ b/source4/librpc/rpc/dcerpc_schannel.c @@ -362,6 +362,9 @@ static NTSTATUS dcerpc_schannel_key(struct dcerpc_pipe *p, DCERPC_NETLOGON_NAME, DCERPC_NETLOGON_UUID, DCERPC_NETLOGON_VERSION); + if (!NT_STATUS_IS_OK(status)) { + return status; + } /* diff --git a/source4/librpc/rpc/dcerpc_util.c b/source4/librpc/rpc/dcerpc_util.c index 4c2c107b22..adb39f5dc7 100644 --- a/source4/librpc/rpc/dcerpc_util.c +++ b/source4/librpc/rpc/dcerpc_util.c @@ -1111,6 +1111,16 @@ NTSTATUS dcerpc_secondary_connection(struct dcerpc_pipe *p, struct dcerpc_pipe * pipe_version, NULL, NULL, NULL); break; + + case NCALRPC: + status = dcerpc_parse_binding(p, p->binding_string, &b); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + b.flags &= ~DCERPC_AUTH_OPTIONS; + status = dcerpc_pipe_connect_ncalrpc(p2, &b, pipe_uuid, pipe_version, NULL, NULL, NULL); + break; + default: return NT_STATUS_NOT_SUPPORTED; } |