From: bert hubert Date: Wed, 24 Feb 2016 15:36:44 +0000 (+0100) Subject: we were inconsistent in comparing ComboAddresses with sin_family==0. Removed possibil... X-Git-Tag: auth-4.0.0-alpha2~6^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F3443%2Fhead;p=thirdparty%2Fpdns.git we were inconsistent in comparing ComboAddresses with sin_family==0. Removed possibility for inconsistency, plus surrounded this bug with unit tests. Added similar test for DNSName. --- diff --git a/pdns/iputils.hh b/pdns/iputils.hh index 3e89cb2ab0..6efb44d133 100644 --- a/pdns/iputils.hh +++ b/pdns/iputils.hh @@ -111,15 +111,7 @@ union ComboAddress { bool operator>(const ComboAddress& rhs) const { - if(boost::tie(sin4.sin_family, sin4.sin_port) > boost::tie(rhs.sin4.sin_family, rhs.sin4.sin_port)) - return true; - if(boost::tie(sin4.sin_family, sin4.sin_port) < boost::tie(rhs.sin4.sin_family, rhs.sin4.sin_port)) - return false; - - if(sin4.sin_family == AF_INET) - return sin4.sin_addr.s_addr > rhs.sin4.sin_addr.s_addr; - else - return memcmp(&sin6.sin6_addr.s6_addr, &rhs.sin6.sin6_addr.s6_addr, 16) > 0; + return rhs.operator<(*this); } struct addressOnlyHash diff --git a/pdns/test-dnsname_cc.cc b/pdns/test-dnsname_cc.cc index c2c683b063..a3cdb3969e 100644 --- a/pdns/test-dnsname_cc.cc +++ b/pdns/test-dnsname_cc.cc @@ -430,6 +430,13 @@ BOOST_AUTO_TEST_CASE(test_compare_naive) { BOOST_CHECK(DNSName("abc.com.") < DNSName("Zdf.com.")); } +BOOST_AUTO_TEST_CASE(test_compare_empty) { + DNSName a, b; + BOOST_CHECK(!(ab)); +} + BOOST_AUTO_TEST_CASE(test_ComboAddressTruncate) { ComboAddress ca4("130.161.252.29"); ca4.truncate(24);