From: Stefan Metzmacher Date: Fri, 13 Oct 2023 07:18:25 +0000 (+0200) Subject: s4:rpc_server/epmapper: use ndr_syntax_id_equal() in dcesrv_epm_Map() to match the... X-Git-Tag: talloc-2.4.2~1240 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ec5496df40e6015ec8de6133a406bb50efebe35;p=thirdparty%2Fsamba.git s4:rpc_server/epmapper: use ndr_syntax_id_equal() in dcesrv_epm_Map() to match the request This matches it much easier to understand. Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett --- diff --git a/source4/rpc_server/epmapper/rpc_epmapper.c b/source4/rpc_server/epmapper/rpc_epmapper.c index 09aa8ae87a0..7c7de2edb3c 100644 --- a/source4/rpc_server/epmapper/rpc_epmapper.c +++ b/source4/rpc_server/epmapper/rpc_epmapper.c @@ -192,6 +192,7 @@ static error_status_t dcesrv_epm_Map(struct dcesrv_call_state *dce_call, TALLOC_ struct dcesrv_ep_iface *eps; struct epm_floor *floors; enum dcerpc_transport_t transport; + struct ndr_syntax_id abstract_syntax; struct ndr_syntax_id ndr_syntax; NTSTATUS status; @@ -219,6 +220,11 @@ static error_status_t dcesrv_epm_Map(struct dcesrv_call_state *dce_call, TALLOC_ floors = r->in.map_tower->tower.floors; + status = dcerpc_floor_get_uuid_full(&floors[0], &abstract_syntax); + if (!NT_STATUS_IS_OK(status)) { + goto failed; + } + status = dcerpc_floor_get_uuid_full(&floors[1], &ndr_syntax); if (!NT_STATUS_IS_OK(status)) { goto failed; @@ -240,15 +246,22 @@ static error_status_t dcesrv_epm_Map(struct dcesrv_call_state *dce_call, TALLOC_ } for (i=0;iin.map_tower->tower.floors[0].lhs.lhs_data, - &eps[i].ep.floors[0].lhs.lhs_data); - if (cmp != 0) { + status = dcerpc_floor_get_uuid_full(&eps[i].ep.floors[0], + &ep_abstract_syntax); + if (!NT_STATUS_IS_OK(status)) { + continue; + } + + match = ndr_syntax_id_equal(&ep_abstract_syntax, + &abstract_syntax); + if (!match) { continue; }