]> granicus.if.org Git - pdns/commitdiff
tests for label and name length check in xfrLabel()
authorKees Monshouwer <mind04@monshouwer.org>
Wed, 21 Jan 2015 10:26:45 +0000 (11:26 +0100)
committermind04 <mind04@monshouwer.org>
Wed, 21 Jan 2015 18:55:25 +0000 (19:55 +0100)
pdns/test-dnsrecords_cc.cc

index 37e7612a1637ae8cebc809bb909d4deef59dd8a3..e43ce1441db89515c41d9199b10fb7838d3ac0d8 100644 (file)
@@ -43,6 +43,21 @@ BOOST_AUTO_TEST_CASE(test_record_types) {
      (CASE_L(QType::CNAME, "name.rec.test", "name.rec.test.", "\x04name\xc0\x11",false))
 // non-local alias
      (CASE_S(QType::CNAME, "name.example.com.", "\x04name\x07""example\x03""com\x00",false))
+// max label length (63)
+     (CASE_S(QType::CNAME, "123456789012345678901234567890123456789012345678901234567890123.example.com.", "\x3f""123456789012345678901234567890123456789012345678901234567890123\x07""example\x03""com\x00", false))
+// local max name length (255)
+     (CASE_S(QType::CNAME, "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012.rec.test.", "\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x34""1234567890123456789012345678901234567890123456789012\xc0\x11", false))
+// non-local max name length (255)
+     (CASE_S(QType::CNAME, "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.", "\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x3d""1234567890123456789012345678901234567890123456789012345678901\x00", false))
+// TODO move the next 4 tests to the badvalue section (required functionality is not there yet)
+// empty label, must be broken
+     (CASE_S(QType::CNAME, "name..example.com.", "\x04""name\x00\x07""example\x03""com\x00", true))
+// overly large label (64), must be broken
+     (CASE_S(QType::CNAME, "1234567890123456789012345678901234567890123456789012345678901234.example.com.", "\x40""1234567890123456789012345678901234567890123456789012345678901234\x07""example\x03""com\x00", true))
+// local overly large name (256), must be broken
+     (CASE_S(QType::CNAME, "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123.rec.test.", "\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x35""12345678901234567890123456789012345678901234567890123\xc0\x11", true))
+// non-local overly large name (256), must be broken
+     (CASE_S(QType::CNAME, "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012.", "\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x3f""123456789012345678901234567890123456789012345678901234567890123\x3e""12345678901234567890123456789012345678901234567890123456789012\x00", true))
 // local names
      (CASE_S(QType::SOA, "ns.rec.test. hostmaster.test.rec. 2013051201 3600 3600 604800 120", "\x02ns\xc0\x11\x0ahostmaster\x04test\x03rec\x00\x77\xfc\xb9\x41\x00\x00\x0e\x10\x00\x00\x0e\x10\x00\x09\x3a\x80\x00\x00\x00\x78",false))
 // local name without dots