]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_session.c: Check for port of zero on incoming SDP.
authorBen Ford <bford@digium.com>
Fri, 8 Nov 2019 19:21:15 +0000 (13:21 -0600)
committerBenjamin Keith Ford <bford@digium.com>
Thu, 21 Nov 2019 20:34:48 +0000 (15:34 -0500)
If a re-invite comes in initiating T.38, but there is no c line in the
SDP and the port is also 0, a crash can occur. A check is now done on
the port to see if the steam is already declined, preventing the crash.
The logic was moved to res_pjsip_session.c because it is handled in a
similar manner in later versions of Asterisk.

ASTERISK-28612
Reported by: Salah Ahmed

Change-Id: Ifc4a0d05b32c7f2156e77fc8435a6ecaa6abada0
(cherry picked from commit c257794330db49f4079a7108d51da60696269b36)

res/res_pjsip_session.c

index 0cc514ae0485a269c838298f924a7b844ecd312a..88e2121636494911ed0a5658e0f102dfbcecb2fc 100644 (file)
@@ -235,6 +235,13 @@ static int handle_incoming_sdp(struct ast_sip_session *session, const pjmedia_sd
                        continue;
                }
 
+               /* If we have a port of 0, ignore this stream */
+               if (!sdp->media[i]->desc.port) {
+                       ast_debug(1, "Declining incoming SDP media stream '%s' at position '%d'\n",
+                               session_media->stream_type, i);
+                       continue;
+               }
+
                if (session_media->handler) {
                        handler = session_media->handler;
                        ast_debug(1, "Negotiating incoming SDP media stream '%s' using %s SDP handler\n",