Fix `Export-PSSession` to not throw error when a rooted path is specified for `-OutputModule` by daxian-dbw · Pull Request #17671 · PowerShell/PowerShell · GitHub
Skip to content

Fix Export-PSSession to not throw error when a rooted path is specified for -OutputModule#17671

Merged
daxian-dbw merged 3 commits intoPowerShell:masterfrom
daxian-dbw:usewindows
Jul 13, 2022
Merged

Fix Export-PSSession to not throw error when a rooted path is specified for -OutputModule#17671
daxian-dbw merged 3 commits intoPowerShell:masterfrom
daxian-dbw:usewindows

Conversation

@daxian-dbw
Copy link
Copy Markdown
Member

PR Summary

The 7.0.10 release contains a commit for a potential security issue: 38e55e1. Here is the announcement about it: PowerShell/Announcements#31.

This particular change from that commit caused a regression in Azure Function when running Import-Module <module-name> -UseWindowsPowerShell, where the user's module path doesn't exist. That command worked fine with the PowerShell 7.0.9 SDK but started to fail with the PowerShell 7.0.11 SDK.

The root cause is that when Export-PSSession is used by Import-Module -UseWindowsPowerShell, a rooted path is always specified to the -OutputModule parameter, so it doesn't matter whether the user's module path exists or not because it doesn't need it to identify the directory to use.

The fix is to use the specified rooted path directly. Actually, Path.Combine(path1, path2) will return path2 if it's rooted.
The error message is also updated:

image

PR Checklist

@daxian-dbw daxian-dbw requested a review from SteveL-MSFT July 13, 2022 01:04
@daxian-dbw daxian-dbw requested a review from anmenaga July 13, 2022 01:05
@daxian-dbw daxian-dbw added the CL-General Indicates that a PR should be marked as a general cmdlet change in the Change Log label Jul 13, 2022
Comment thread src/System.Management.Automation/utils/PathUtils.cs
Comment thread src/System.Management.Automation/utils/PathUtils.cs
@ghost ghost added Waiting on Author The PR was reviewed and requires changes or comments from the author before being accept and removed Waiting on Author The PR was reviewed and requires changes or comments from the author before being accept labels Jul 13, 2022
Comment thread src/System.Management.Automation/utils/PathUtils.cs Outdated
Co-authored-by: Aditya Patwardhan <adityap@microsoft.com>
@pull-request-quantifier-deprecated
Copy link
Copy Markdown

@daxian-dbw daxian-dbw merged commit f9d424d into PowerShell:master Jul 13, 2022
@daxian-dbw daxian-dbw deleted the usewindows branch July 13, 2022 20:32
@iSazonov
Copy link
Copy Markdown
Collaborator

iSazonov commented Jul 14, 2022

It makes sense for PowerShell Committee to review OutModule parameter. I think the case is the same as #3174 (#11701) - OutModule parameter should be LiteralPath. If so we could simplify CreateModuleDirectory() method.

@ghost
Copy link
Copy Markdown

ghost commented Jul 18, 2022

🎉v7.3.0-preview.6 has been released which incorporates this pull request.:tada:

Handy links:

@adityapatwardhan
Copy link
Copy Markdown
Member

/backport release/v7.2.6

@adityapatwardhan
Copy link
Copy Markdown
Member

/backport to release/v7.0.12

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Aug 2, 2022

Started backporting to release/v7.0.12: https://github.com/PowerShell/PowerShell/actions/runs/2784794011

GitHub
PowerShell for every system! Contribute to PowerShell/PowerShell development by creating an account on GitHub.

@adityapatwardhan
Copy link
Copy Markdown
Member

/backport to release/v7.2.6

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Aug 2, 2022

@adityapatwardhan backporting to release/v7.0.12 failed, the patch most likely resulted in conflicts:

$ git am --3way --ignore-whitespace --keep-non-patch changes.patch

Applying: Fix Export-PSSession to not throw error when a rooted path is specified for -OutputModule
Applying: Update comment
error: sha1 information is lacking or useless (src/System.Management.Automation/utils/PathUtils.cs).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 Update comment
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Error: The process '/usr/bin/git' failed with exit code 128

Please backport manually!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Aug 2, 2022

Started backporting to release/v7.2.6: https://github.com/PowerShell/PowerShell/actions/runs/2784796745

GitHub
PowerShell for every system! Contribute to PowerShell/PowerShell development by creating an account on GitHub.

@ghost
Copy link
Copy Markdown

ghost commented Aug 11, 2022

🎉v7.0.12 has been released which incorporates this pull request.:tada:

Handy links:

@ghost
Copy link
Copy Markdown

ghost commented Aug 11, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backport-7.0.x-Done Backport-7.2.x-Done CL-General Indicates that a PR should be marked as a general cmdlet change in the Change Log Extra Small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants