AST-2013-005: Fix crash caused by invalid SDP
[asterisk/asterisk.git] / channels / chan_sip.c
index 46d803c..e6d9cff 100644 (file)
@@ -10688,7 +10688,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
 
        /* Setup audio address and port */
        if (p->rtp) {
-               if (portno > 0) {
+               if (sa && portno > 0) {
                        start_ice(p->rtp);
                        ast_sockaddr_set_port(sa, portno);
                        ast_rtp_instance_set_remote_address(p->rtp, sa);
@@ -10736,7 +10736,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
 
        /* Setup video address and port */
        if (p->vrtp) {
-               if (vportno > 0) {
+               if (vsa && vportno > 0) {
                        start_ice(p->vrtp);
                        ast_sockaddr_set_port(vsa, vportno);
                        ast_rtp_instance_set_remote_address(p->vrtp, vsa);
@@ -10754,7 +10754,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
 
        /* Setup text address and port */
        if (p->trtp) {
-               if (tportno > 0) {
+               if (tsa && tportno > 0) {
                        start_ice(p->trtp);
                        ast_sockaddr_set_port(tsa, tportno);
                        ast_rtp_instance_set_remote_address(p->trtp, tsa);
@@ -10778,7 +10778,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
 
        /* Setup image address and port */
        if (p->udptl) {
-               if (udptlportno > 0) {
+               if (isa && udptlportno > 0) {
                        if (ast_test_flag(&p->flags[1], SIP_PAGE2_SYMMETRICRTP) && ast_test_flag(&p->flags[1], SIP_PAGE2_UDPTL_DESTINATION)) {
                                ast_rtp_instance_get_remote_address(p->rtp, isa);
                                if (!ast_sockaddr_isnull(isa) && debug) {