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
pull/23/head
Nick French 4 years ago committed by Friendly Automation
parent 80c14f74bc
commit 505939c9ed

@ -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;

Loading…
Cancel
Save