mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-30 17:25:09 +02:00
Handle Path Variable: Prepend System path to User path (#563)
This commit is contained in:
parent
c2765de0f7
commit
602a02995a
@ -24,7 +24,7 @@ if ($TestFilePath) {
|
|||||||
# convert to bash format
|
# convert to bash format
|
||||||
$TestFilePath = $TestFilePath -replace "\\","/"
|
$TestFilePath = $TestFilePath -replace "\\","/"
|
||||||
}
|
}
|
||||||
$OriginalUserPath = [System.Environment]::GetEnvironmentVariable('Path', [System.EnvironmentVariableTarget]::User)
|
$OriginalSystemPath = [System.Environment]::GetEnvironmentVariable('Path', [System.EnvironmentVariableTarget]::Machine)
|
||||||
|
|
||||||
# Make sure config.h exists. It is used in some bashstests (Ex - sftp-glob.sh, cfgparse.sh)
|
# Make sure config.h exists. It is used in some bashstests (Ex - sftp-glob.sh, cfgparse.sh)
|
||||||
# first check in $BashTestsPath folder. If not then it's parent folder. If not then in the $OpenSSHBinPath
|
# first check in $BashTestsPath folder. If not then it's parent folder. If not then in the $OpenSSHBinPath
|
||||||
@ -104,7 +104,7 @@ try
|
|||||||
|
|
||||||
# Prepend shell path to User PATH in the registry so that SSHD authenticated child process can inherit it.
|
# Prepend shell path to User PATH in the registry so that SSHD authenticated child process can inherit it.
|
||||||
# We can probably delete the logic above to add it to the process PATH, but there is no need.
|
# We can probably delete the logic above to add it to the process PATH, but there is no need.
|
||||||
[System.Environment]::SetEnvironmentVariable('Path', $TEST_SHELL_DIR + ";" + $OriginalUserPath, [System.EnvironmentVariableTarget]::User)
|
[System.Environment]::SetEnvironmentVariable('Path', $TEST_SHELL_DIR + ";" + $OriginalSystemPath, [System.EnvironmentVariableTarget]::Machine)
|
||||||
|
|
||||||
$BashTestsPath = $BashTestsPath -replace "\\","/"
|
$BashTestsPath = $BashTestsPath -replace "\\","/"
|
||||||
Push-location $BashTestsPath
|
Push-location $BashTestsPath
|
||||||
@ -260,7 +260,7 @@ try
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
# Restore User Path variable in the registry once the tests finish running.
|
# Restore User Path variable in the registry once the tests finish running.
|
||||||
[System.Environment]::SetEnvironmentVariable('Path', $OriginalUserPath, [System.EnvironmentVariableTarget]::User)
|
[System.Environment]::SetEnvironmentVariable('Path', $OriginalSystemPath, [System.EnvironmentVariableTarget]::Machine)
|
||||||
# remove temp test directory
|
# remove temp test directory
|
||||||
if (!$SkipCleanup)
|
if (!$SkipCleanup)
|
||||||
{
|
{
|
||||||
|
@ -196,14 +196,14 @@ setup_session_user_vars(wchar_t* profile_path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Path is a special case. The System Path value is appended to the User Path value */
|
/* Path is a special case. The System Path value is preppended to the User Path value */
|
||||||
if (_wcsicmp(name, L"PATH") == 0 && j == 1) {
|
if (_wcsicmp(name, L"PATH") == 0 && j == 1) {
|
||||||
if ((required = GetEnvironmentVariableW(L"PATH", NULL, 0)) != 0) {
|
if ((required = GetEnvironmentVariableW(L"PATH", NULL, 0)) != 0) {
|
||||||
size_t user_path_size = wcslen(to_apply);
|
size_t user_path_size = wcslen(to_apply) + 1;
|
||||||
path_value = xmalloc((required + user_path_size + 2) * 2);
|
path_value = xmalloc((required + user_path_size) * 2);
|
||||||
GOTO_CLEANUP_ON_ERR(memcpy_s(path_value, (user_path_size + 1) * 2, to_apply, (user_path_size + 1) * 2));
|
GetEnvironmentVariableW(L"PATH", path_value, required);
|
||||||
path_value[user_path_size] = L';';
|
path_value[required - 1] = L';';
|
||||||
GetEnvironmentVariableW(L"PATH", path_value + user_path_size + 1, required);
|
GOTO_CLEANUP_ON_ERR(memcpy_s(path_value + required, user_path_size * 2, to_apply, user_path_size * 2));
|
||||||
to_apply = path_value;
|
to_apply = path_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user