mirror of
https://github.com/asterisk/asterisk.git
synced 2026-07-23 16:05:30 -07:00
When the text does not match exactly (e.g. RTP/SAVP), then the %n conversion
fails, and the resulting integer is garbage. Thus, we must initialize the integer and check it afterwards for success. (closes issue #14000) Reported by: folke Patches: asterisk-sipbg-sscanf-1.4.22.diff uploaded by folke (license 626) asterisk-sipbg-sscanf-1.6.0.1.diff uploaded by folke (license 626) asterisk-sipbg-sscanf-trunk-r159896.diff uploaded by folke (license 626) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@160297 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
+7
-6
@@ -5185,8 +5185,9 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
|
||||
int audio = FALSE;
|
||||
|
||||
numberofports = 1;
|
||||
if ((sscanf(m, "audio %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2) ||
|
||||
(sscanf(m, "audio %d RTP/AVP %n", &x, &len) == 1)) {
|
||||
len = -1;
|
||||
if ((sscanf(m, "audio %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
|
||||
(sscanf(m, "audio %d RTP/AVP %n", &x, &len) == 1 && len > 0)) {
|
||||
audio = TRUE;
|
||||
numberofmediastreams++;
|
||||
/* Found audio stream in this media definition */
|
||||
@@ -5201,8 +5202,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
|
||||
ast_verbose("Found RTP audio format %d\n", codec);
|
||||
ast_rtp_set_m_type(newaudiortp, codec);
|
||||
}
|
||||
} else if ((sscanf(m, "video %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2) ||
|
||||
(sscanf(m, "video %d RTP/AVP %n", &x, &len) == 1)) {
|
||||
} else if ((sscanf(m, "video %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
|
||||
(sscanf(m, "video %d RTP/AVP %n", &x, &len) == 1 && len >= 0)) {
|
||||
/* If it is not audio - is it video ? */
|
||||
ast_clear_flag(&p->flags[0], SIP_NOVIDEO);
|
||||
numberofmediastreams++;
|
||||
@@ -5217,8 +5218,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
|
||||
ast_verbose("Found RTP video format %d\n", codec);
|
||||
ast_rtp_set_m_type(newvideortp, codec);
|
||||
}
|
||||
} else if (p->udptl && ( (sscanf(m, "image %d udptl t38%n", &x, &len) == 1) ||
|
||||
(sscanf(m, "image %d UDPTL t38%n", &x, &len) == 1) )) {
|
||||
} else if (p->udptl && ( (sscanf(m, "image %d udptl t38%n", &x, &len) == 1 && len > 0) ||
|
||||
(sscanf(m, "image %d UDPTL t38%n", &x, &len) == 1 && len >= 0) )) {
|
||||
if (debug)
|
||||
ast_verbose("Got T.38 offer in SDP in dialog %s\n", p->callid);
|
||||
udptlportno = x;
|
||||
|
||||
Reference in New Issue
Block a user