From: Adam C. Emerson Date: Fri, 20 Mar 2026 18:13:44 +0000 (-0400) Subject: rgw/asio_client: Don't use VLAs when parsing environment X-Git-Tag: v21.0.1~260^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fbf49d0fbb9096569b9d8e1acfa2a1582424297f;p=ceph.git rgw/asio_client: Don't use VLAs when parsing environment Signed-off-by: Adam C. Emerson --- 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;