From 8c7a1b8a671291e6ee2e7e4abdbdd41e9c714b31 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 6 Oct 2022 09:56:47 +0200 Subject: [PATCH] misc: Switch to a std::array in makeHexDump() --- pdns/misc.cc | 10 +++++----- pdns/test-misc_hh.cc | 6 ++++++ 2 files changed, 11 insertions(+), 5 deletions(-) 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() -- 2.47.2