s4:rpc_server/epmapper: check dcerpc_floor_get_uuid_full() result in dcesrv_epm_Map()
authorStefan Metzmacher <metze@samba.org>
Fri, 13 Oct 2023 07:11:51 +0000 (09:11 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 17 Oct 2023 19:20:38 +0000 (19:20 +0000)
This already checks for EPM_PROTOCOL_UUID and simplifies the logic.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/rpc_server/epmapper/rpc_epmapper.c

index 43ccc342a1a19b62978425201bfc2a1940bbc695..09aa8ae87a0e30c1abe4dcfb5560f5184b34a9bc 100644 (file)
@@ -193,6 +193,7 @@ static error_status_t dcesrv_epm_Map(struct dcesrv_call_state *dce_call, TALLOC_
        struct epm_floor *floors;
        enum dcerpc_transport_t transport;
        struct ndr_syntax_id ndr_syntax;
+       NTSTATUS status;
 
        count = build_ep_list(mem_ctx, dce_call->conn->dce_ctx->endpoint_list, &eps);
 
@@ -218,10 +219,12 @@ static error_status_t dcesrv_epm_Map(struct dcesrv_call_state *dce_call, TALLOC_
 
        floors = r->in.map_tower->tower.floors;
 
-       dcerpc_floor_get_uuid_full(&r->in.map_tower->tower.floors[1], &ndr_syntax);
+       status = dcerpc_floor_get_uuid_full(&floors[1], &ndr_syntax);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto failed;
+       }
 
-       if (floors[1].lhs.protocol != EPM_PROTOCOL_UUID ||
-           !ndr_syntax_id_equal(&ndr_syntax, &ndr_transfer_syntax_ndr)) {
+       if (!ndr_syntax_id_equal(&ndr_syntax, &ndr_transfer_syntax_ndr)) {
                goto failed;
        }