[Asterisk-code-review] build: Fix ast sockaddr initialization to be more portable (asterisk[11])

George Joseph asteriskteam at digium.com
Thu Jun 9 09:30:20 CDT 2016


George Joseph has uploaded a new change for review.

  https://gerrit.asterisk.org/2981

Change subject: build:  Fix ast_sockaddr initialization to be more portable
......................................................................

build:  Fix ast_sockaddr initialization to be more portable

A change to glibc 2.22 changed the order of the sockadddr_storage
members which caused the places where we do an initialization of
ast_sockaddr with '{ { 0, 0, } }' to fail compilation.  Those
initializers (which we shouldn't have been using anyway) have been
replaced with memsets.

Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4
---
M channels/chan_sip.c
M tests/test_netsock2.c
2 files changed, 6 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/81/2981/1

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index dc7218c..a3ca04d 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -15226,11 +15226,12 @@
 
 static const char *sip_sanitized_host(const char *host)
 {
-	struct ast_sockaddr addr = { { 0, 0, }, };
+	struct ast_sockaddr addr;
 
 	/* peer/sip_pvt->tohost and sip_registry->hostname should never have a port
 	 * in them, so we use PARSE_PORT_FORBID here. If this lookup fails, we return
 	 * the original host which is most likely a host name and not an IP. */
+	memset(&addr, 0, sizeof(addr));
 	if (!ast_sockaddr_parse(&addr, host, PARSE_PORT_FORBID)) {
 		return host;
 	}
diff --git a/tests/test_netsock2.c b/tests/test_netsock2.c
index e182b0a..bb22eda 100644
--- a/tests/test_netsock2.c
+++ b/tests/test_netsock2.c
@@ -75,7 +75,7 @@
 	};
 
 	size_t x;
-	struct ast_sockaddr addr = { { 0, 0, } };
+	struct ast_sockaddr addr;
 	int parse_result;
 
 	switch (cmd) {
@@ -91,15 +91,17 @@
 	}
 
 	for (x = 0; x < ARRAY_LEN(test_vals); x++) {
+		memset(&addr, 0, sizeof(addr));
 		if ((parse_result = ast_sockaddr_parse(&addr, test_vals[x].address, 0)) != test_vals[x].expected_result) {
 			ast_test_status_update(test, "On '%s' expected %d but got %d\n", test_vals[x].address, test_vals[x].expected_result, parse_result);
 			res = AST_TEST_FAIL;
 		}
 		if (parse_result) {
-			struct ast_sockaddr tmp_addr = { { 0, 0, } };
+			struct ast_sockaddr tmp_addr;
 			const char *tmp;
 
 			tmp = ast_sockaddr_stringify(&addr);
+			memset(&addr, 0, sizeof(tmp_addr));
 			ast_sockaddr_parse(&tmp_addr, tmp, 0);
 			if (ast_sockaddr_cmp_addr(&addr, &tmp_addr)) {
 				char buf[64];

-- 
To view, visit https://gerrit.asterisk.org/2981
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: 11
Gerrit-Owner: George Joseph <gjoseph at digium.com>



More information about the asterisk-code-review mailing list