From fbf49d0fbb9096569b9d8e1acfa2a1582424297f Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Fri, 20 Mar 2026 14:13:44 -0400 Subject: [PATCH] rgw/asio_client: Don't use VLAs when parsing environment Signed-off-by: Adam C. Emerson --- src/rgw/rgw_asio_client.cc | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/rgw/rgw_asio_client.cc b/src/rgw/rgw_asio_client.cc index a8a9ad420d8..cfb08ad44ab 100644 --- a/src/rgw/rgw_asio_client.cc +++ b/src/rgw/rgw_asio_client.cc @@ -49,22 +49,12 @@ int ClientIO::init_env(CephContext *cct) continue; } - static const std::string_view HTTP_{"HTTP_"}; - - char buf[name.size() + HTTP_.size() + 1]; - auto dest = std::copy(std::begin(HTTP_), std::end(HTTP_), buf); - for (auto src = name.begin(); src != name.end(); ++src, ++dest) { - if (*src == '-') { - *dest = '_'; - } else if (*src == '_') { - *dest = '-'; - } else { - *dest = std::toupper(*src); - } - } - *dest = '\0'; + static constexpr std::string_view HTTP_{"HTTP_"}; - env.set(buf, std::string(value)); + std::string key{HTTP_}; + key.reserve(name.size() + HTTP_.size()); + uppercase_dash_transform(name, std::back_inserter(key), true); + env.set(std::move(key), std::string(value)); } int major = request.version() / 10; -- 2.47.3