From 5f15ee47c5d77fd40235e718c6dbd6423fc8f3dc Mon Sep 17 00:00:00 2001 From: bert hubert Date: Wed, 24 Feb 2016 16:36:44 +0100 Subject: [PATCH] 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. --- pdns/iputils.hh | 10 +--------- pdns/test-dnsname_cc.cc | 7 +++++++ pdns/test-iputils_hh.cc | 8 ++++++++ 3 files changed, 16 insertions(+), 9 deletions(-) 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); -- 2.47.2