xua: Verify all route ctxs received in ASPAC msg

Change-Id: I16ad0847d671522c8942b441db7e4c460f4f142b
This commit is contained in:
Pau Espin 2019-10-24 17:41:03 +02:00
parent 2b139a65f0
commit 6e10736190
1 changed files with 10 additions and 5 deletions

View File

@ -416,6 +416,9 @@ static void xua_asp_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void
struct osmo_ss7_asp *asp = xafp->asp;
struct xua_msg *xua_in;
uint32_t traf_mode;
struct xua_msg_part *part;
uint32_t rctx;
int i;
check_stop_t_ack(fi, event);
switch (event) {
@ -456,11 +459,13 @@ static void xua_asp_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void
break;
}
}
if (xua_msg_find_tag(xua_in, M3UA_IEI_ROUTE_CTX)) {
uint32_t rctx = xua_msg_get_u32(xua_in, M3UA_IEI_ROUTE_CTX);
if (!osmo_ss7_as_find_by_rctx(asp->inst, rctx)) {
peer_send_error(fi, M3UA_ERR_INVAL_ROUT_CTX);
break;
if ((part = xua_msg_find_tag(xua_in, M3UA_IEI_ROUTE_CTX))) {
for (i = 0; i < part->len / sizeof(uint32_t); i++) {
rctx = osmo_load32be(&part->dat[i * sizeof(uint32_t)]);
if (!osmo_ss7_as_find_by_rctx(asp->inst, rctx)) {
peer_send_error(fi, M3UA_ERR_INVAL_ROUT_CTX);
break;
}
}
}
/* send ACK */