summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-10-30 11:48:08 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:05:05 -0500
commiteb3b2568641759c0b5a4e121c75102e96af7e683 (patch)
treee1b5395fc3b6fb0b979d2ff035070e70e9eef160
parent173dda6bf4db2faf29a1845ce2b1028105511dab (diff)
downloadsamba-eb3b2568641759c0b5a4e121c75102e96af7e683.tar.gz
samba-eb3b2568641759c0b5a4e121c75102e96af7e683.tar.bz2
samba-eb3b2568641759c0b5a4e121c75102e96af7e683.zip
r3392: fixed schannel over ncalrpc
(This used to be commit 0b93be9f5f89ef17f94e8e98c3a405495e04e235)
-rw-r--r--source4/librpc/idl/netlogon.idl2
-rw-r--r--source4/librpc/rpc/dcerpc_schannel.c3
-rw-r--r--source4/librpc/rpc/dcerpc_util.c10
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;
}