From: Pieter Lexis Date: Tue, 9 Feb 2021 10:56:46 +0000 (+0100) Subject: Add test for parseRFC1035CharString X-Git-Tag: dnsdist-1.6.0-rc1~33^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4d71d796146906722d25383cb235e93a69d82c4c;p=thirdparty%2Fpdns.git Add test for parseRFC1035CharString --- diff --git a/pdns/test-misc_hh.cc b/pdns/test-misc_hh.cc index d53c0770fd..213d6a34d4 100644 --- a/pdns/test-misc_hh.cc +++ b/pdns/test-misc_hh.cc @@ -227,6 +227,68 @@ BOOST_AUTO_TEST_CASE(test_getCarbonHostName) BOOST_CHECK_EQUAL(my_hostname.size(), hostname.size()); } +BOOST_AUTO_TEST_CASE(test_parseRFC1035CharString) +{ + string in; + string out; + string expected; + size_t amount; + + in = "foobar123"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, "foobar123"); + + in = "foobar123\\,bazquux456"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, "foobar123,bazquux456"); + + in = string("\"")+string(16262, 'A')+string("\""); + expected = string(16262, 'A'); + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, expected); + + in = "hello\\044world\\002"; + expected = "hello,world\x02"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, expected); + + in = "\"hello\\044world\""; + expected = "hello,world"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, expected); + + // Here we'll only read until the space + in = "hello world"; + expected = "hello"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, 5); + BOOST_CHECK_EQUAL(out, expected); + + // \032 is a space, but it is read because it is escaped + in = "hello\\032world"; + expected = "hello world"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, expected); + + in = "\"hello\\032world\""; + expected = "hello world"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, expected); + + in = "\"hello\\032world XXXX\""; + expected = "hello world XXXX"; + amount = parseRFC1035CharString(in, out); + BOOST_CHECK_EQUAL(amount, in.size()); + BOOST_CHECK_EQUAL(out, expected); +} + BOOST_AUTO_TEST_CASE(test_parseSVCBValueList) { vector out;