Skip to content

Commit 948394b

Browse files
authored
Only embedded newlines should trigger safe paste warning (#906)
* Only embedded newlines trigger warning * Adjust UnsafePasteTest
1 parent fd0f36a commit 948394b

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/Utils.vala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ namespace Terminal.Utils {
136136
*/
137137
public bool is_safe_paste (string text, out string[]? msg_array) {
138138
string[] msgs = {};
139-
if ("\n" in text || "&" in text || "|" in text || ";" in text ) {
139+
var newline_index = text.index_of ("\n"); // First occurrence of new line
140+
bool embedded_newline = newline_index >= 0 && newline_index < text.length - 1;
141+
if (embedded_newline || "&" in text || "|" in text || ";" in text ) {
140142
msgs += _("The pasted text may contain multiple commands");
141143
}
142144

src/tests/UnsafePasteTest.vala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ private void main (string[] args) {
2727
assert (!Terminal.Utils.is_safe_paste ("sudo apt autoremove", out msg_array));
2828

2929
// Multi-line commands
30-
assert (!Terminal.Utils.is_safe_paste ("\n", out msg_array));
30+
assert (Terminal.Utils.is_safe_paste ("xx\n", out msg_array));
31+
assert (!Terminal.Utils.is_safe_paste ("xx\nyy", out msg_array));
3132
assert (!Terminal.Utils.is_safe_paste ("&", out msg_array));
3233
assert (!Terminal.Utils.is_safe_paste ("|", out msg_array));
3334
assert (!Terminal.Utils.is_safe_paste (";", out msg_array));

0 commit comments

Comments
 (0)