Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sudo doesn't preserves the command line as-is #117

Open
j0le opened this issue Jan 12, 2025 · 0 comments
Open

Sudo doesn't preserves the command line as-is #117

j0le opened this issue Jan 12, 2025 · 0 comments
Labels
Issue-Bug Something isn't working Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting

Comments

@j0le
Copy link

j0le commented Jan 12, 2025

Sudo for Windows version

1.0.1

Windows build number

10.0.26100.2605

Other Software

Steps to reproduce

Start the shell cmd.exe and run these commandlines.

1a)

C:\MeinPath\get-command-line.exe hello    world

1b)

sudo run --inline -- C:\MeinPath\get-command-line.exe hello    world

Replace C:\MeinPath\get-command-line.exe with path to your commandline-outputting tool.

Note the four space characters between “hello” and “world”.

2a)

C:\MeinPath\get-command-line.exe hello"    "world

2b)

sudo run --inline -- C:\MeinPath\get-command-line.exe hello"    "world

Expected Behavior

The expected output of command 1a) is:

C:\MeinPath\get-command-line.exe  hello"    "world

and of 1b):

"C:\MeinPath\get-command-line.exe" hello    world

with four spaces between “hello” and “world”!

The expected output of command 2a) is:

C:\MeinPath\get-command-line.exe  hello"    "world

and of 2b):

"C:\MeinPath\get-command-line.exe" hello"    "world

with the quote characters inbetween “hello” and “world”.

cmd preserves the command-line with all spaces, which was entered by the user, when it builds the lpCommandLine argument for CreateProcessW().

Actual Behavior

The actual behavior is, that the output of 1b) is:

"C:\MeinPath\get-command-line.exe" hello world

without four spaces between “hello” and “world”!

And the output of 2b) is actually:

"C:\MeinPath\get-command-line.exe" "hello    world"

with the quote characters around “hello world”.

See this image:

Image

Comments

The reason that I report this bug, is, that not every program on Windows uses the same logic to split commandline into multiple arguments.
The usual convetion is to do it like the Microsoft C-Runtime. But some programs like cmd.exe itself, do it differently.

If the commandline after the two dashes -- is preserved as-is, it would be the best, I think.

Another helpful program to debug these things is my Rust program "create-process-rust".

@j0le j0le added Issue-Bug Something isn't working Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting labels Jan 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Issue-Bug Something isn't working Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting
Projects
None yet
Development

No branches or pull requests

1 participant