The problem is .NET will return empty strings for special folders that don't exist in some accounts (like System account), and the module path code appends path locations without first checking if the root path is non-empty. This results in partial paths in the PSModulePath list, which are then interpreted by .NET file APIs as rooted in the current working directory. And this in turn can allow low privilege users to drop modules in locations that higher privilege accounts will load from, thus gaining escalated privilege code execution.
These changes detect this non-rooted condition and prevents partial paths from being included in search lists.
Cherry picked from !17201
Co-authored-by: Travis Plunk <tplunk@microsoft.com>
Fixed package names verification to support multi-digit versions.
Currently "Validate RPM package names" release step is failing because of version "7.0.10" in these examples:
WARNING: powershell-7.0.10-1.centos.8.x86_64.rpm is not a valid package name
WARNING: powershell-7.0.10-1.rhel.7.x86_64.rpm is not a valid package name
WARNING: powershell-lts-7.0.10-1.centos.8.x86_64.rpm is not a valid package name
WARNING: powershell-lts-7.0.10-1.rhel.7.x86_64.rpm is not a valid package name
Preview-3 change log was generated by `Get-ChangeLog -LastReleaseTag 'v7.1.0-preview.2' -ThisReleaseTag 'v7.1.0-preview.3'`
Preview-2 change log was copy-pasted from Gihub's `tags/v7.1.0-preview.2`
Add additional check for each component of PSModulePath (that is set for WinPS process) - if it is has pwsh.exe in the parent directory, then it is considered another PS Core installation and this location is also filtered out.
* Filter PSModulePath when starting PS 5.1. Removing PS-Core-specific paths from PSModulePath of WinCompat process (Windows PS).
* Make implicit WinCompat respect NoClobber and Scope parameters
* Add ErrorAction.Ignore when searching for WinPSCompatSession
* return correct casing of filesystem path during normalization
* handle UNC case
* handle case to add trailing separator back
* add support for NTFS streams syntax
* add case-sensitive test
* only apply correct casing to directories
* handle 8.3 path syntax
* fix short path processing
This PR addresses 2 issues:
fedora27 dockerfiles were missing compat-openssl10 prerequisite that on Linux-based Docker hosts produced error No usable version of the libssl was found during Restore-PSPester.
kalilinux PS package validation is failing because of open issue #5413 , so disabling this config for now.
This PR addresses minor issues with PS-package docker tests.
Historically rpm package version string was different from other packages, however, this is no longer the case, so updating tests to account for that (to simplify things - removing RPM-version parameter from dockerfiles because it is no longer used).
Configs that use 'linux-x64.tar.gz' (currently only "opensuse42.2") are failing, so fixing that in the script.
This automation is used for basic validation of PS packages during a release;
Covered configs:
ubuntu14.04
ubuntu16.04
ubuntu17.04
debian.8
debian.9
centos7
fedora25
fedora26
kalilinux
opensuse42.2
During the process Docker files are filled out and executed with Docker build;
During the build PS packages are downloaded onto Docker containers, installed and selected Pester tests from PowerShell Github repo are executed.
* Debian8 update
* RHEL7 update
* Main page update
* Fixed 'MD024 Multiple headers with the same content'
* Update linux.md
Added explicit text about compatibility of Ubuntu14.04 pkg on Debian8 to avoid confusion about URLs
* Update linux.md
This fixes issue #2607.
'RequiredModules' is a field in module manifest that can reference other modules using ModuleSpecification format.
The basic version of this format (just module name) was working fine, however, there was a problem when a more detailed version of the format was used (the one that uses module versions or/and GUIDs).
During module import, there is a check for cyclic references through 'RequiredModules' field. The bug was in this check for cyclic references, related to comparison rules for ModuleSpecification objects - as a result, the code was incorrectly reporting 'cyclic reference' error in cases when there was none.
Also, added tests for different ModuleSpecification formats and a test for error when there is actually a cyclic reference.
Two updates with this PR:
- reclassified automounted drives tests to be 'Feature' instead of 'CI' because this is more accurate;
- fixed failures in tests setup caused by "subst.exe" native utility having problems running as child process of powershell process tree run under "runas.exe /trustlevel:0x20000" (in Start-UnelevatedProcess in build.psm1).