diff --git a/apache2/msc_tree.c b/apache2/msc_tree.c index 07c76a00..232a363e 100644 --- a/apache2/msc_tree.c +++ b/apache2/msc_tree.c @@ -832,7 +832,7 @@ TreeNode *TreeAddIP(const char *buffer, CPTTree *tree, int type) { switch(type) { case IPV4_TREE: - memset(&addr4, 0, sizeof(addr4)); + memset(&(addr4.s_addr), 0, sizeof(addr4.s_addr)); memset(ip_strv4, 0x0, NETMASK_32); strncpy(ip_strv4, buffer, sizeof(ip_strv4)); @@ -859,20 +859,16 @@ TreeNode *TreeAddIP(const char *buffer, CPTTree *tree, int type) { ip_strv4[pos] = '\0'; } - ret = inet_pton(AF_INET, ip_strv4, &addr4); + ret = inet_pton(AF_INET, ip_strv4, &(addr4.s_addr)); if (ret <= 0) { return NULL; } - - ip = addr4.s_addr; - tree->count++; - - return CPTAddElement((unsigned char *)&ip, NETMASK_32, tree, netmask_v4); + return CPTAddElement((unsigned char *)&(addr4.s_addr), NETMASK_32, tree, netmask_v4); case IPV6_TREE: - memset(&addr6, 0, sizeof(addr6)); + memset(&(addr6.s6_addr), 0, sizeof(addr6.s6_addr)); memset(ip_strv6, 0x0, NETMASK_128); strncpy(ip_strv6, buffer, sizeof(ip_strv6)); @@ -899,7 +895,7 @@ TreeNode *TreeAddIP(const char *buffer, CPTTree *tree, int type) { ip_strv6[pos] = '\0'; } - ret = inet_pton(AF_INET6, ip_strv6, &addr6); + ret = inet_pton(AF_INET6, ip_strv6, &(addr6.s6_addr)); if (ret <= 0) { @@ -908,10 +904,11 @@ TreeNode *TreeAddIP(const char *buffer, CPTTree *tree, int type) { tree->count++; - return CPTAddElement((unsigned char *)&addr6.s6_addr, NETMASK_128, tree, netmask_v6); + return CPTAddElement((unsigned char *)&(addr6.s6_addr), NETMASK_128, tree, netmask_v6); default: return NULL; } return NULL; } + diff --git a/apache2/msc_util.c b/apache2/msc_util.c index d687ac4d..501c24e5 100644 --- a/apache2/msc_util.c +++ b/apache2/msc_util.c @@ -2712,26 +2712,26 @@ int tree_contains_ip(apr_pool_t *mp, TreeRoot *rtree, } if (strchr(value, ':') == NULL) { - if (inet_pton(AF_INET, value, &in) <= 0) { + if (inet_pton(AF_INET, value, &(in.s_addr)) <= 0) { *error_msg = apr_psprintf(mp, "IPmatch: bad IPv4 " \ "specification \"%s\".", value); return -1; } - if (CPTIpMatch(msr, (unsigned char *)&in.s_addr, rtree->ipv4_tree, + if (CPTIpMatch(msr, (unsigned char *)&(in.s_addr), rtree->ipv4_tree, IPV4_TREE) != NULL) { return 1; } } #if APR_HAVE_IPV6 else { - if (inet_pton(AF_INET6, value, &in6) <= 0) { + if (inet_pton(AF_INET6, value, &(in6.s6_addr)) <= 0) { *error_msg = apr_psprintf(mp, "IPmatch: bad IPv6 " \ "specification \"%s\".", value); return -1; } - if (CPTIpMatch(msr, (unsigned char *)&in6.s6_addr, rtree->ipv6_tree, + if (CPTIpMatch(msr, (unsigned char *)&(in6.s6_addr), rtree->ipv6_tree, IPV6_TREE) != NULL) { return 1; }