mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 20:57:00 +00:00
If an application gives the first parameter to OSC 52, validate and pass
on to outside terminal. GitHub issue 3192.
This commit is contained in:
11
input.c
11
input.c
@ -2693,6 +2693,9 @@ input_osc_52(struct input_ctx *ictx, const char *p)
|
||||
int outlen, state;
|
||||
struct screen_write_ctx ctx;
|
||||
struct paste_buffer *pb;
|
||||
const char* allow = "cpqs01234567";
|
||||
char flags[sizeof allow] = "";
|
||||
u_int i, j = 0;
|
||||
|
||||
if (wp == NULL)
|
||||
return;
|
||||
@ -2707,6 +2710,12 @@ input_osc_52(struct input_ctx *ictx, const char *p)
|
||||
return;
|
||||
log_debug("%s: %s", __func__, end);
|
||||
|
||||
for (i = 0; p + i != end; i++) {
|
||||
if (strchr(allow, p[i]) != NULL && strchr(flags, p[i]) == NULL)
|
||||
flags[j++] = p[i];
|
||||
}
|
||||
log_debug("%s: %.*s %s", __func__, (int)(end - p - 1), p, flags);
|
||||
|
||||
if (strcmp(end, "?") == 0) {
|
||||
if ((pb = paste_get_top(NULL)) != NULL)
|
||||
buf = paste_buffer_data(pb, &len);
|
||||
@ -2728,7 +2737,7 @@ input_osc_52(struct input_ctx *ictx, const char *p)
|
||||
}
|
||||
|
||||
screen_write_start_pane(&ctx, wp, NULL);
|
||||
screen_write_setselection(&ctx, out, outlen);
|
||||
screen_write_setselection(&ctx, flags, out, outlen);
|
||||
screen_write_stop(&ctx);
|
||||
notify_pane("pane-set-clipboard", wp);
|
||||
|
||||
|
Reference in New Issue
Block a user