build: Fix ast_sockaddr initialization to be more portable
authorGeorge Joseph <gjoseph@digium.com>
Thu, 9 Jun 2016 14:20:33 +0000 (08:20 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Thu, 9 Jun 2016 14:50:31 +0000 (09:50 -0500)
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

channels/chan_sip.c
tests/test_netsock2.c

index eec904f..4c3516d 100644 (file)
@@ -15790,11 +15790,12 @@ static void start_register_timeout(struct sip_registry *reg)
 
 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;
        }
index 638ff37..780b0b0 100644 (file)
@@ -75,7 +75,7 @@ AST_TEST_DEFINE(parsing)
        };
 
        size_t x;
-       struct ast_sockaddr addr = { { 0, 0, } };
+       struct ast_sockaddr addr;
        int parse_result;
 
        switch (cmd) {
@@ -91,15 +91,17 @@ AST_TEST_DEFINE(parsing)
        }
 
        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(&tmp_addr, 0, sizeof(tmp_addr));
                        ast_sockaddr_parse(&tmp_addr, tmp, 0);
                        if (ast_sockaddr_cmp_addr(&addr, &tmp_addr)) {
                                char buf[64];