Sudo doesn't preserves the command line as-is
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- rust
- Ambito
- cli, operating-systems
Direzione di ricerca
Inizia riproducendo le due coppie di comandi in cmd.exe con sudo run --inline -- e confronta l’output di GetCommandLineW(). Leggi il comportamento della riga di comando di CreateProcessW e le convenzioni di parsing di Microsoft C Runtime citate nel report. Il lavoro è completato quando i comandi inline preservano la spaziatura originale e le virgolette incorporate mostrate negli output previsti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Sudo for Windows version
1.0.1
Windows build number
10.0.26100.2605
Other Software
- cmd.exe
- get-command-line or any other program that prints the literal value of
GetCommandLineW()
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:
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".
- Lingua principale
- Rust
- Stelle
- 5.9k
- Fork
- 180
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/sudo
-
Invalid translation in helpApertaIssue-Bug Needs-Triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 74/100
-
Issue-Bug Needs-Triage
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
-
Issue-Feature Needs-Triage
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
-
Issue-Bug Needs-Triage
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
-
Issue-Bug Needs-Triage
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Tutte le issue di microsoft/sudo
Issue simili
-
ai-priority/P2 bug db/oracle user-priority/P1
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
swc-project/swc#12516 ·
I maintainer di solito rispondono entro 1 giorno
-
app bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
mls-rs-crypto-awslc: exact aws-lc-rs =1.16.3 pin blocks rustls security updateForse già presa @muscariello l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100