Add bound check for the cursor top value to InvokePrompt (#4791)

This commit is contained in:
jftkcs
2025-07-09 16:32:13 -07:00
committed by GitHub
parent 9b6a47d798
commit addd1a6f1f
+13 -1
View File
@@ -1035,16 +1035,28 @@ namespace Microsoft.PowerShell
public static void InvokePrompt(ConsoleKeyInfo? key = null, object arg = null)
{
var console = _singleton._console;
console.CursorVisible = false;
if (arg is int newY)
{
if (newY < 0 || newY >= console.BufferHeight)
{
throw new ArgumentOutOfRangeException(nameof(arg));
}
console.CursorVisible = false;
console.SetCursorPosition(0, newY);
}
else
{
newY = _singleton._initialY - _singleton._options.ExtraPromptLineCount;
// Silently return if user has implicitly requested an impossible prompt invocation.
if (newY < 0)
{
return;
}
console.CursorVisible = false;
console.SetCursorPosition(0, newY);
// We need to rewrite the prompt, so blank out everything from a previous prompt invocation