From 3946f0449112cac64b8f0b8b995dfa3498e8cc66 Mon Sep 17 00:00:00 2001 From: Leander Schulten Date: Fri, 27 Sep 2024 06:26:34 +0200 Subject: [PATCH] env_strings must also checked case insensitive --- src/vcpkg/base/system.process.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/vcpkg/base/system.process.cpp b/src/vcpkg/base/system.process.cpp index c3e7b3988d..5173864695 100644 --- a/src/vcpkg/base/system.process.cpp +++ b/src/vcpkg/base/system.process.cpp @@ -555,7 +555,7 @@ namespace vcpkg system32_env, "\\WindowsPowerShell\\v1.0\\"); - std::unordered_set env_strings = { + std::vector env_strings = { "ALLUSERSPROFILE", "APPDATA", "CommonProgramFiles", @@ -650,20 +650,25 @@ namespace vcpkg } else { - env_strings.emplace(std::move(var)); + env_strings.emplace_back(std::move(var)); } } } Environment env; + std::unordered_set env_strings_uppercase; + for (auto&& env_var : env_strings) + { + env_strings_uppercase.emplace(Strings::ascii_to_uppercase(env_var)); + } for (auto&& env_var : get_environment_variables()) { auto pos = env_var.find('='); auto key = env_var.substr(0, pos); - if (Util::Sets::contains(env_strings, key) || Util::any_of(env_prefix_string, [&](auto&& group) { - return Strings::case_insensitive_ascii_starts_with(key, group); - })) + if (Util::Sets::contains(env_strings_uppercase, Strings::ascii_to_uppercase(key)) || + Util::any_of(env_prefix_string, + [&](auto&& group) { return Strings::case_insensitive_ascii_starts_with(key, group); })) { auto value = pos == std::string::npos ? "" : env_var.substr(pos + 1); env.add_entry(key, value);