diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-31 23:26:43 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-13 11:54:16 +0100 |
commit | 7f5badb36b443c14d555a3d54f59c25064a7d78a (patch) | |
tree | c52bb867071ac42d20b31dcfdb3d4caf56b86bef | |
parent | caeef257d24bbf1166e7a8b88af290c102f7d3e4 (diff) | |
download | samba-7f5badb36b443c14d555a3d54f59c25064a7d78a.tar.gz samba-7f5badb36b443c14d555a3d54f59c25064a7d78a.tar.xz samba-7f5badb36b443c14d555a3d54f59c25064a7d78a.zip |
s3:srv_epmapper: make use of dcerpc_binding_*() functions in endpoints_match()
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
-rw-r--r-- | source3/rpc_server/epmapper/srv_epmapper.c | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/source3/rpc_server/epmapper/srv_epmapper.c b/source3/rpc_server/epmapper/srv_epmapper.c index 55474c0da7..32b8b1b577 100644 --- a/source3/rpc_server/epmapper/srv_epmapper.c +++ b/source3/rpc_server/epmapper/srv_epmapper.c @@ -127,37 +127,52 @@ static struct dcesrv_iface_list *find_interface_list(const struct dcesrv_endpoin /* * Check if two endpoints match. */ -static bool endpoints_match(const struct dcerpc_binding *ep1, - const struct dcerpc_binding *ep2) +static bool endpoints_match(const struct dcerpc_binding *b1, + const struct dcerpc_binding *b2) { - if (ep1->transport != ep2->transport) { + enum dcerpc_transport_t t1; + const char *ep1; + const char *h1; + enum dcerpc_transport_t t2; + const char *ep2; + const char *h2; + + t1 = dcerpc_binding_get_transport(b1); + ep1 = dcerpc_binding_get_string_option(b1, "endpoint"); + h1 = dcerpc_binding_get_string_option(b1, "host"); + + t2 = dcerpc_binding_get_transport(b2); + ep2 = dcerpc_binding_get_string_option(b2, "endpoint"); + h2 = dcerpc_binding_get_string_option(b2, "host"); + + if (t1 != t2) { return false; } - if (!ep1->endpoint && ep2->endpoint) { + if (!ep1 && ep2) { return false; } - if (ep1->endpoint && !ep2->endpoint) { + if (ep1 && !ep2) { return false; } - if (ep1->endpoint && ep2->endpoint) { - if (!strequal(ep1->endpoint, ep2->endpoint)) { + if (ep1 && ep2) { + if (!strequal(ep1, ep2)) { return false; } } - if (!ep1->host && ep2->host) { + if (!h1 && h2) { return false; } - if (ep1->host && !ep2->host) { + if (h1 && !h2) { return false; } - if (ep1->host && ep2->host) { - if (!strequal(ep1->host, ep2->host)) { + if (h1 && h2) { + if (!strequal(h1, h2)) { return false; } } |