[asterisk-commits] rmudgett: trunk r323397 - in /trunk: ./ main/dnsmgr.c main/netsock2.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jun 14 12:22:30 CDT 2011


Author: rmudgett
Date: Tue Jun 14 12:22:26 2011
New Revision: 323397

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=323397
Log:
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.
........

Modified:
    trunk/   (props changed)
    trunk/main/dnsmgr.c
    trunk/main/netsock2.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Modified: trunk/main/dnsmgr.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/dnsmgr.c?view=diff&rev=323397&r1=323396&r2=323397
==============================================================================
--- trunk/main/dnsmgr.c (original)
+++ trunk/main/dnsmgr.c Tue Jun 14 12:22:26 2011
@@ -135,7 +135,7 @@
 	 * If it's actually an IP address and not a name, there's no
 	 * need for a managed lookup.
 	 */
-	if (ast_sockaddr_parse(result, name, 0)) {
+	if (ast_sockaddr_parse(result, name, PARSE_PORT_FORBID)) {
 		return 0;
 	}
 

Modified: trunk/main/netsock2.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/netsock2.c?view=diff&rev=323397&r1=323396&r2=323397
==============================================================================
--- trunk/main/netsock2.c (original)
+++ trunk/main/netsock2.c Tue Jun 14 12:22:26 2011
@@ -121,8 +121,10 @@
 int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags)
 {
 	char *s = str;
-
-	ast_debug(5, "Splitting '%s' gives...\n", 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' into...\n", str);
 	*host = NULL;
 	*port = NULL;
 	if (*s == '[') {
@@ -130,7 +132,8 @@
 		for (; *s && *s != ']'; ++s) {
 		}
 		if (*s == ']') {
-			*s++ = '\0';
+			host_end = s;
+			++s;
 		}
 		if (*s == ':') {
 			*port = s + 1;
@@ -148,11 +151,10 @@
 			}
 		}
 		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 @@
 		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;
 }
 




More information about the asterisk-commits mailing list