From: Sean Bright Date: Fri, 28 Jan 2011 20:19:08 +0000 (+0000) Subject: Restore some conditionals that we lost in r277814. X-Git-Tag: 1.8.4-rc1~70 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=45e00ac1c513e23a91649b0246c041fac587569d;p=thirdparty%2Fasterisk.git Restore some conditionals that we lost in r277814. There are some cases where ast_append_ha() is called with a NULL instead of a valid int pointer. So if we get a NULL, don't try to dereference it. (closes issue #18162) Reported by: imcdona Patches: issue0018162.patch uploaded by pabelanger (license 224) Tested by: enegaard git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@304638 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/acl.c b/main/acl.c index dcbc3a9659..a7b283ed97 100644 --- a/main/acl.c +++ b/main/acl.c @@ -421,7 +421,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha if (!ast_sockaddr_parse(&ha->addr, address, PARSE_PORT_FORBID)) { ast_log(LOG_WARNING, "Invalid IP address: %s\n", address); ast_free_ha(ha); - *error = 1; + if (error) { + *error = 1; + } return ret; } @@ -443,7 +445,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha if (!ast_sockaddr_parse(&ha->netmask, mask, PARSE_PORT_FORBID)) { ast_log(LOG_WARNING, "Invalid netmask: %s\n", mask); ast_free_ha(ha); - *error = 1; + if (error) { + *error = 1; + } return ret; } /* If someone specifies an IPv4-mapped IPv6 netmask, @@ -457,13 +461,17 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha if (addr_is_v4 ^ mask_is_v4) { ast_log(LOG_WARNING, "Address and mask are not using same address scheme.\n"); ast_free_ha(ha); - *error = 1; + if (error) { + *error = 1; + } return ret; } } else if (parse_cidr_mask(&ha->netmask, addr_is_v4, mask)) { ast_log(LOG_WARNING, "Invalid CIDR netmask: %s\n", mask); ast_free_ha(ha); - *error = 1; + if (error) { + *error = 1; + } return ret; } @@ -475,7 +483,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha char *failaddr = ast_strdupa(ast_sockaddr_stringify(&ha->addr)); ast_log(LOG_WARNING, "Unable to apply netmask %s to address %s\n", failmask, failaddr); ast_free_ha(ha); - *error = 1; + if (error) { + *error = 1; + } return ret; }