From 3c8598ffef65c8a0735e7364c6ffd138471e6ee5 Mon Sep 17 00:00:00 2001 From: Nick French Date: Sat, 19 Dec 2020 11:54:50 -0600 Subject: [PATCH] res_pjsip: Prevent segfault in UDP registration with flow transports Segfault occurs during outbound UDP registration when all transport states are being iterated over. The transport object in the transport is accessed, but flow transports have a NULL transport object. Modify to not iterate over any flow transport ASTERISK-29210 #close Change-Id: If28dc3a18bdcbd0a49598b09b7fe4404d45c996a --- res/res_pjsip/pjsip_message_filter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/res/res_pjsip/pjsip_message_filter.c b/res/res_pjsip/pjsip_message_filter.c index 1826ee2030..7c91ba853d 100644 --- a/res/res_pjsip/pjsip_message_filter.c +++ b/res/res_pjsip/pjsip_message_filter.c @@ -111,7 +111,8 @@ static pjsip_transport *get_udp_transport(pj_str_t *address, int port) } for (iter = ao2_iterator_init(transport_states, 0); (transport_state = ao2_iterator_next(&iter)); ao2_ref(transport_state, -1)) { - if (transport_state->type == AST_TRANSPORT_UDP && + if (!transport_state->flow && + transport_state->type == AST_TRANSPORT_UDP && !pj_strcmp(&transport_state->transport->local_name.host, address) && transport_state->transport->local_name.port == port) { sip_transport = transport_state->transport; -- 2.47.2