summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2008-02-01 00:34:11 +0000
committerRussell Bryant <russell@russellbryant.com>2008-02-01 00:34:11 +0000
commitc2d9664f6f41a1a3121599db42cfba0f429a74b9 (patch)
treea1f5165f3e38139856c85f610ff5e53d446b408a /channels/chan_iax2.c
parent41cf37844ed8b427038a86541554e52e55be0e84 (diff)
Merged revisions 101693 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r101693 | russell | 2008-01-31 18:32:49 -0600 (Thu, 31 Jan 2008) | 8 lines Add some more sanity checking on IAX2 dial strings for the case that no peer or hostname was provided, which is the one part of the dial string that is absolutely required. If it's not there, bail out. (closes issue #11897) Reported by sokhapkin Patch by me ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@101694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 221219bc5..f7ed8a7fc 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -3369,6 +3369,11 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout)
tmpstr = ast_strdupa(dest);
parse_dial_string(tmpstr, &pds);
+ if (ast_strlen_zero(pds.peer)) {
+ ast_log(LOG_WARNING, "No peer provided in the IAX2 dial string '%s'\n", dest);
+ return -1;
+ }
+
if (!pds.exten)
pds.exten = defaultrdest;
@@ -9503,16 +9508,15 @@ static struct ast_channel *iax2_request(const char *type, int format, void *data
tmpstr = ast_strdupa(data);
parse_dial_string(tmpstr, &pds);
+ if (ast_strlen_zero(pds.peer)) {
+ ast_log(LOG_WARNING, "No peer provided in the IAX2 dial string '%s'\n", (char *) data);
+ return NULL;
+ }
+
memset(&cai, 0, sizeof(cai));
cai.capability = iax2_capability;
ast_copy_flags(&cai, &globalflags, IAX_NOTRANSFER | IAX_TRANSFERMEDIA | IAX_USEJITTERBUF | IAX_FORCEJITTERBUF);
-
- if (!pds.peer) {
- ast_log(LOG_WARNING, "No peer given\n");
- return NULL;
- }
-
/* Populate our address from the given */
if (create_addr(pds.peer, NULL, &sin, &cai)) {
@@ -10881,6 +10885,11 @@ static int cache_get_callno_locked(const char *data)
tmpstr = ast_strdupa(data);
parse_dial_string(tmpstr, &pds);
+ if (ast_strlen_zero(pds.peer)) {
+ ast_log(LOG_WARNING, "No peer provided in the IAX2 dial string '%s'\n", data);
+ return -1;
+ }
+
/* Populate our address from the given */
if (create_addr(pds.peer, NULL, &sin, &cai))
return -1;
@@ -11319,8 +11328,11 @@ static int iax2_devicestate(void *data)
memset(&pds, 0, sizeof(pds));
parse_dial_string(tmp, &pds);
- if (ast_strlen_zero(pds.peer))
+
+ if (ast_strlen_zero(pds.peer)) {
+ ast_log(LOG_WARNING, "No peer provided in the IAX2 dial string '%s'\n", (char *) data);
return res;
+ }
ast_debug(3, "Checking device state for device %s\n", pds.peer);