From: Francis Dupont Date: Sat, 13 Jun 2026 09:31:10 +0000 (+0200) Subject: [#2598] Fixed and improved X-Git-Tag: Kea-3.3.0~108 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56af556c25be604289638ae3e1e1fc03bb3ceb06;p=thirdparty%2Fkea.git [#2598] Fixed and improved --- diff --git a/src/lib/dhcp/classify.cc b/src/lib/dhcp/classify.cc index 3a36c80e4f..9617ec9da0 100644 --- a/src/lib/dhcp/classify.cc +++ b/src/lib/dhcp/classify.cc @@ -14,8 +14,6 @@ #include #include -#include - namespace isc { namespace dhcp { @@ -164,20 +162,20 @@ const std::vector ClientClasses::CLIENT_CLASS_VALID_CHARACTERS = { std::string ClientClasses::escape(const std::string& name) { - std::stringstream ss; + std::string output; for (char const& c : name) { - unsigned u = static_cast(c); + uint8_t u = static_cast(c); if ((u < 128) && CLIENT_CLASS_VALID_CHARACTERS[u]) { - ss << c; + output.push_back(c); if (c == CLIENT_CLASS_ESCAPE) { - ss << c; + output.push_back(CLIENT_CLASS_ESCAPE); } } else { - ss << CLIENT_CLASS_ESCAPE - << std::hex << std::setfill('0') << std::setw(2) << u; + output.push_back(CLIENT_CLASS_ESCAPE); + output.append(util::str::byteToHex(u)); } } - return (ss.str()); + return (output); } } // end of namespace dhcp diff --git a/src/lib/dhcp/tests/classify_unittest.cc b/src/lib/dhcp/tests/classify_unittest.cc index fe499d2aeb..3464889be6 100644 --- a/src/lib/dhcp/tests/classify_unittest.cc +++ b/src/lib/dhcp/tests/classify_unittest.cc @@ -399,6 +399,9 @@ TEST(ClassifyTest, escape) { }, { "\"foo\", \"bar\"", "%22foo%22%2c%20%22bar%22" + }, + { + "\xeaoo\xe2" "ar", "%eaoo%e2ar" } };