Changeset 2915 for pjproject/trunk


Ignore:
Timestamp:
Sep 22, 2009 5:56:44 PM (15 years ago)
Author:
bennylp
Message:

Fixed ticket #959: Assertion upon receiving malformed SIP messages (thanks Andrey Kovalenko for the report)

  • transaction checks for the method before processing incoming ACK request
  • transport layer checks the validity of status code in the response
  • added SIPP scenario to reproduce the bad ACK request
Location:
pjproject/trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip/sip_transaction.c

    r2857 r2915  
    28412841            /* Process incoming ACK request. */ 
    28422842 
     2843            /* Verify that this is an INVITE transaction */ 
     2844            if (tsx->method.id != PJSIP_INVITE_METHOD) { 
     2845                PJ_LOG(2, (tsx->obj_name,  
     2846                           "Received illegal ACK for %.*s transaction", 
     2847                           (int)tsx->method.name.slen, 
     2848                           tsx->method.name.ptr)); 
     2849                return PJSIP_EINVALIDMETHOD; 
     2850            } 
     2851 
    28432852            /* Cease retransmission. */ 
    28442853            if (tsx->retransmit_timer.id != 0) { 
  • pjproject/trunk/pjsip/src/pjsip/sip_transport.c

    r2724 r2915  
    14401440                rdata->msg_info.via->rport_param = rdata->pkt_info.src_port; 
    14411441            } 
     1442        } else { 
     1443            /* Drop malformed responses */ 
     1444            if (rdata->msg_info.msg->line.status.code < 100 || 
     1445                rdata->msg_info.msg->line.status.code >= 700) 
     1446            { 
     1447                mgr->on_rx_msg(mgr->endpt, PJSIP_EINVALIDSTATUS, rdata); 
     1448                goto finish_process_fragment; 
     1449            } 
    14421450        } 
    14431451 
Note: See TracChangeset for help on using the changeset viewer.