assistant: Prevent possible execution of generated terminal commands (#17647)
Some checks are pending
CI / Check formatting and spelling (push) Waiting to run
CI / (macOS) Run Clippy and tests (push) Waiting to run
CI / (Linux) Run Clippy and tests (push) Waiting to run
CI / (Windows) Run Clippy and tests (push) Waiting to run
CI / Create a macOS bundle (push) Blocked by required conditions
CI / Create a Linux bundle (push) Blocked by required conditions
CI / Create arm64 Linux bundle (push) Blocked by required conditions
Deploy Docs / Deploy Docs (push) Waiting to run
Docs / Check formatting (push) Waiting to run

Closes #17424

Release Notes:

- Fixed an issue where commands generated by the terminal command could
sometimes be executed without confirmation
This commit is contained in:
Bennet Bo Fenner 2024-09-10 11:03:44 -04:00 committed by GitHub
parent bf64c0899f
commit 93b3520c11
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -988,7 +988,7 @@ impl TerminalTransaction {
pub fn push(&mut self, hunk: String, cx: &mut AppContext) {
// Ensure that the assistant cannot accidentally execute commands that are streamed into the terminal
let input = hunk.replace(CARRIAGE_RETURN, " ");
let input = Self::sanitize_input(hunk);
self.terminal
.update(cx, |terminal, _| terminal.input(input));
}
@ -1003,6 +1003,10 @@ impl TerminalTransaction {
terminal.input(CARRIAGE_RETURN.to_string())
});
}
fn sanitize_input(input: String) -> String {
input.replace(['\r', '\n'], "")
}
}
pub struct Codegen {