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;
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;
}
for (i=0;i<count;i++) {
- int cmp;
+ struct ndr_syntax_id ep_abstract_syntax;
+ int match;
if (transport != dcerpc_transport_by_tower(&eps[i].ep)) {
continue;
}
- cmp = data_blob_cmp(&r->in.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;
}