From 4d71d796146906722d25383cb235e93a69d82c4c Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Tue, 9 Feb 2021 11:56:46 +0100 Subject: [PATCH] Add test for parseRFC1035CharString --- pdns/test-misc_hh.cc | 62 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) 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; -- 2.47.2