]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/asio_client: Don't use VLAs when parsing environment
authorAdam C. Emerson <aemerson@redhat.com>
Fri, 20 Mar 2026 18:13:44 +0000 (14:13 -0400)
committerAdam C. Emerson <aemerson@redhat.com>
Thu, 26 Mar 2026 04:07:20 +0000 (00:07 -0400)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/rgw/rgw_asio_client.cc

index a8a9ad420d86c36adeeb8e8360f6198313b2a033..cfb08ad44ab65cf0b8e3ff80fcee3dc87ee90d27 100644 (file)
@@ -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;