diff options
-rw-r--r-- | libproxy/modules/ignore_ip.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libproxy/modules/ignore_ip.cpp b/libproxy/modules/ignore_ip.cpp index e1b99bd..709a08d 100644 --- a/libproxy/modules/ignore_ip.cpp +++ b/libproxy/modules/ignore_ip.cpp @@ -90,7 +90,7 @@ sockaddr_from_cidr(sa_family_t af, uint8_t cidr) /* IPv4 */ if (af == AF_INET) { - sockaddr_in *mask = new sockaddr_in; + sockaddr_in *mask = (sockaddr_in*) new char[sizeof(sockaddr_in)]; mask->sin_family = af; mask->sin_addr.s_addr = htonl(~0 << (32 - (cidr > 32 ? 32 : cidr))); @@ -100,7 +100,7 @@ sockaddr_from_cidr(sa_family_t af, uint8_t cidr) /* IPv6 */ else if (af == AF_INET6) { - sockaddr_in6 *mask = new sockaddr_in6; + sockaddr_in6 *mask = (sockaddr_in6*) new char[sizeof(sockaddr_in6)]; mask->sin6_family = af; for (uint8_t i=0 ; i < sizeof(mask->sin6_addr) ; i++) mask->sin6_addr.s6_addr[i] = ~0 << (8 - (8*i > cidr ? 0 : cidr-8*i < 8 ? cidr-8*i : 8) ); @@ -154,8 +154,8 @@ public: if (ign_ip && net_ip && ign_ip->sa_family == net_ip->sa_family) goto out; - delete ign_ip; - delete net_ip; + delete[] ign_ip; + delete[] net_ip; ign_ip = NULL; net_ip = NULL; } |