From: Remi Gacogne Date: Thu, 6 Oct 2022 07:56:47 +0000 (+0200) Subject: misc: Switch to a std::array in makeHexDump() X-Git-Tag: dnsdist-1.8.0-rc1~293^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c7a1b8a671291e6ee2e7e4abdbdd41e9c714b31;p=thirdparty%2Fpdns.git misc: Switch to a std::array in makeHexDump() --- diff --git a/pdns/misc.cc b/pdns/misc.cc index f760a957ab..753821ccb7 100644 --- a/pdns/misc.cc +++ b/pdns/misc.cc @@ -583,13 +583,13 @@ string U32ToIP(uint32_t val) string makeHexDump(const string& str) { - char tmp[5]; + std::array tmp; string ret; - ret.reserve((int)(str.size()*2.2)); + ret.reserve(static_cast(str.size()*2.2)); - for(char n : str) { - snprintf(tmp, sizeof(tmp), "%02x ", (unsigned char)n); - ret+=tmp; + for (char n : str) { + snprintf(tmp.data(), tmp.size(), "%02x ", static_cast(n)); + ret += tmp.data(); } return ret; } diff --git a/pdns/test-misc_hh.cc b/pdns/test-misc_hh.cc index f519048409..ec2f478f1f 100644 --- a/pdns/test-misc_hh.cc +++ b/pdns/test-misc_hh.cc @@ -391,4 +391,10 @@ BOOST_AUTO_TEST_CASE(test_makeBytesFromHex) { BOOST_CHECK_THROW(makeBytesFromHex("1234GG"), std::range_error); } +BOOST_AUTO_TEST_CASE(test_makeHexDump) { + auto out = makeHexDump("\x12\x34\x56\x78\x90\xab\xcd\xef"); + // there is a trailing white space by design + BOOST_CHECK_EQUAL(out, "12 34 56 78 90 ab cd ef "); +} + BOOST_AUTO_TEST_SUITE_END()