Add an option (default off) to control the passthrough escape sequence.

Like set-clipboard and allow-rename it is safer to forbid this by
default.
This commit is contained in:
nicm
2022-02-15 13:11:29 +00:00
committed by Nicholas Marriott
parent 190b88fcab
commit eabbc80b75
3 changed files with 26 additions and 7 deletions

View File

@@ -2235,15 +2235,19 @@ input_enter_dcs(struct input_ctx *ictx)
static int static int
input_dcs_dispatch(struct input_ctx *ictx) input_dcs_dispatch(struct input_ctx *ictx)
{ {
struct window_pane *wp = ictx->wp;
struct screen_write_ctx *sctx = &ictx->ctx; struct screen_write_ctx *sctx = &ictx->ctx;
u_char *buf = ictx->input_buf; u_char *buf = ictx->input_buf;
size_t len = ictx->input_len; size_t len = ictx->input_len;
const char prefix[] = "tmux;"; const char prefix[] = "tmux;";
const u_int prefixlen = (sizeof prefix) - 1; const u_int prefixlen = (sizeof prefix) - 1;
if (wp == NULL)
return (0);
if (ictx->flags & INPUT_DISCARD) if (ictx->flags & INPUT_DISCARD)
return (0); return (0);
if (!options_get_number(ictx->wp->options, "allow-passthrough"))
return (0);
log_debug("%s: \"%s\"", __func__, buf); log_debug("%s: \"%s\"", __func__, buf);
if (len >= prefixlen && strncmp(buf, prefix, prefixlen) == 0) if (len >= prefixlen && strncmp(buf, prefix, prefixlen) == 0)

View File

@@ -800,6 +800,14 @@ const struct options_table_entry options_table[] = {
"linked to ('off')." "linked to ('off')."
}, },
{ .name = "allow-passthrough",
.type = OPTIONS_TABLE_FLAG,
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
.default_num = 0,
.text = "Whether applications are allowed to use the escape sequence "
"to bypass tmux."
},
{ .name = "allow-rename", { .name = "allow-rename",
.type = OPTIONS_TABLE_FLAG, .type = OPTIONS_TABLE_FLAG,
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE, .scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,

7
tmux.1
View File

@@ -4406,6 +4406,13 @@ The default is on.
Available pane options are: Available pane options are:
.Pp .Pp
.Bl -tag -width Ds -compact .Bl -tag -width Ds -compact
.It Xo Ic allow-passthrough
.Op Ic on | off
.Xc
Allow programs in the pane to bypass
.Nm
using a terminal escape sequence (\eePtmux;...\ee\e\e).
.Pp
.It Xo Ic allow-rename .It Xo Ic allow-rename
.Op Ic on | off .Op Ic on | off
.Xc .Xc