]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
misc: Switch to a std::array in makeHexDump()
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 6 Oct 2022 07:56:47 +0000 (09:56 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 6 Oct 2022 08:01:08 +0000 (10:01 +0200)
pdns/misc.cc
pdns/test-misc_hh.cc

index f760a957abef8cdd8bc8048a47a3a134f2d6adde..753821ccb7b9b56fb74afdc6dfb035d47b84c1ad 100644 (file)
@@ -583,13 +583,13 @@ string U32ToIP(uint32_t val)
 
 string makeHexDump(const string& str)
 {
-  char tmp[5];
+  std::array<char, 5> tmp;
   string ret;
-  ret.reserve((int)(str.size()*2.2));
+  ret.reserve(static_cast<size_t>(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<unsigned char>(n));
+    ret += tmp.data();
   }
   return ret;
 }
index f5190484096723053a118e829dbd79b73572b8b1..ec2f478f1fd94df801189e95869a86ba7c4a57e5 100644 (file)
@@ -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()