From 21f7db4c4dbbc1837667a7d813663036f9288ea6 Mon Sep 17 00:00:00 2001 From: nicm <nicm> Date: Wed, 26 Feb 2025 08:55:27 +0000 Subject: [PATCH] Do not allow meta prefix on paste start and end sequences, GitHub issue 4387. --- server-client.c | 4 ++-- tmux.h | 3 ++- tty-keys.c | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/server-client.c b/server-client.c index 847a8576..7b017697 100644 --- a/server-client.c +++ b/server-client.c @@ -2247,13 +2247,13 @@ out: static int server_client_is_bracket_paste(struct client *c, key_code key) { - if (key == KEYC_PASTE_START) { + if ((key & KEYC_MASK_KEY) == KEYC_PASTE_START) { c->flags |= CLIENT_BRACKETPASTING; log_debug("%s: bracket paste on", c->name); return (0); } - if (key == KEYC_PASTE_END) { + if ((key & KEYC_MASK_KEY) == KEYC_PASTE_END) { c->flags &= ~CLIENT_BRACKETPASTING; log_debug("%s: bracket paste off", c->name); return (0); diff --git a/tmux.h b/tmux.h index cd93097e..52b85cb1 100644 --- a/tmux.h +++ b/tmux.h @@ -167,7 +167,8 @@ struct winlink; /* Is this a paste key? */ #define KEYC_IS_PASTE(key) \ - ((key) == KEYC_PASTE_START || (key) == KEYC_PASTE_END) + (((key) & KEYC_MASK_KEY) == KEYC_PASTE_START || \ + ((key) & KEYC_MASK_KEY) == KEYC_PASTE_END) /* Multiple click timeout. */ #define KEYC_CLICK_TIMEOUT 300 diff --git a/tty-keys.c b/tty-keys.c index 0de31c5d..77ab4ae1 100644 --- a/tty-keys.c +++ b/tty-keys.c @@ -208,8 +208,8 @@ static const struct tty_default_key_raw tty_default_raw_keys[] = { { "\033[O", KEYC_FOCUS_OUT }, /* Paste keys. */ - { "\033[200~", KEYC_PASTE_START }, - { "\033[201~", KEYC_PASTE_END }, + { "\033[200~", KEYC_PASTE_START|KEYC_IMPLIED_META }, + { "\033[201~", KEYC_PASTE_END|KEYC_IMPLIED_META }, /* Extended keys. */ { "\033[1;5Z", '\011'|KEYC_CTRL|KEYC_SHIFT },