diff options
author | Richard Mudgett <rmudgett@digium.com> | 2011-06-14 17:22:26 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2011-06-14 17:22:26 +0000 |
commit | 9ff8844c7f812ce4e5151beb746c0ed9a93d6cb2 (patch) | |
tree | aa2067070f20632fd52f1044b0bfc5aa4b32efcc /main/netsock2.c | |
parent | abd7ef817eb96193486f61848313d2e267c2b503 (diff) |
Merged revisions 323392,323394 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r323392 | rmudgett | 2011-06-14 12:21:24 -0500 (Tue, 14 Jun 2011) | 6 lines
Add more strict hostname checking to ast_dnsmgr_lookup().
Change suggested in review.
Review: https://reviewboard.asterisk.org/r/1240/
........
r323394 | rmudgett | 2011-06-14 12:21:39 -0500 (Tue, 14 Jun 2011) | 2 lines
Made ast_sockaddr_split_hostport() port warning msgs more meaningful.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@323397 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/netsock2.c')
-rw-r--r-- | main/netsock2.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/main/netsock2.c b/main/netsock2.c index 25f15a2fc..d6561fba2 100644 --- a/main/netsock2.c +++ b/main/netsock2.c @@ -121,8 +121,10 @@ char *ast_sockaddr_stringify_fmt(const struct ast_sockaddr *sa, int format) int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags) { char *s = str; + char *orig_str = str;/* Original string in case the port presence is incorrect. */ + char *host_end = NULL;/* Delay terminating the host in case the port presence is incorrect. */ - ast_debug(5, "Splitting '%s' gives...\n", str); + ast_debug(5, "Splitting '%s' into...\n", str); *host = NULL; *port = NULL; if (*s == '[') { @@ -130,7 +132,8 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags) for (; *s && *s != ']'; ++s) { } if (*s == ']') { - *s++ = '\0'; + host_end = s; + ++s; } if (*s == ':') { *port = s + 1; @@ -148,11 +151,10 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags) } } if (*port) { - **port = '\0'; + host_end = *port; ++*port; } } - ast_debug(5, "...host '%s' and port '%s'.\n", *host, *port); switch (flags & PARSE_PORT_MASK) { case PARSE_PORT_IGNORE: @@ -160,18 +162,23 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags) break; case PARSE_PORT_REQUIRE: if (*port == NULL) { - ast_log(LOG_WARNING, "missing port\n"); + ast_log(LOG_WARNING, "Port missing in %s\n", orig_str); return 0; } break; case PARSE_PORT_FORBID: if (*port != NULL) { - ast_log(LOG_WARNING, "port disallowed\n"); + ast_log(LOG_WARNING, "Port disallowed in %s\n", orig_str); return 0; } break; } + /* Can terminate the host string now if needed. */ + if (host_end) { + *host_end = '\0'; + } + ast_debug(5, "...host '%s' and port '%s'.\n", *host, *port ? *port : ""); return 1; } |