mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	pjproject's fmtp retrieval function failed to catch invalid fmtp attributes. Because of this Asterisk would crash if given an SDP with an invalid fmtp attribute. When retrieving the format this patch now makes sure the fmtp attribute is available. If not available it now returns an error status. ASTERISK-27583 #close Change-Id: I5cebe000ce2d846cae3af33b6d72c416e51caf2f
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
 | |
| index a3dd80b..6117e07 100644
 | |
| --- a/pjmedia/src/pjmedia/sdp.c
 | |
| +++ b/pjmedia/src/pjmedia/sdp.c
 | |
| @@ -256,7 +256,8 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtpmap( const pjmedia_sdp_attr *attr,
 | |
|  
 | |
|      PJ_ASSERT_RETURN(pj_strcmp2(&attr->name, "rtpmap")==0, PJ_EINVALIDOP);
 | |
|  
 | |
| -    PJ_ASSERT_RETURN(attr->value.slen != 0, PJMEDIA_SDP_EINATTR);
 | |
| +    if (attr->value.slen == 0)
 | |
| +        return PJMEDIA_SDP_EINATTR;
 | |
|  
 | |
|      init_sdp_parser();
 | |
|  
 | |
| @@ -341,6 +342,9 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_fmtp( const pjmedia_sdp_attr *attr,
 | |
|  
 | |
|      PJ_ASSERT_RETURN(pj_strcmp2(&attr->name, "fmtp")==0, PJ_EINVALIDOP);
 | |
|  
 | |
| +    if (attr->value.slen == 0)
 | |
| +        return PJMEDIA_SDP_EINATTR;
 | |
| +
 | |
|      /* fmtp BNF:
 | |
|       *	a=fmtp:<format> <format specific parameter>
 | |
|       */
 | |
| @@ -379,6 +383,9 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtcp(const pjmedia_sdp_attr *attr,
 | |
|  
 | |
|      PJ_ASSERT_RETURN(pj_strcmp2(&attr->name, "rtcp")==0, PJ_EINVALIDOP);
 | |
|  
 | |
| +    if (attr->value.slen == 0)
 | |
| +        return PJMEDIA_SDP_EINATTR;
 | |
| +
 | |
|      init_sdp_parser();
 | |
|  
 | |
|      /* fmtp BNF:
 |