From 6378c87d15b473697a131335f33e82315dc79756 Mon Sep 17 00:00:00 2001 From: nicm Date: Sat, 19 Jul 2025 19:20:10 +0000 Subject: [PATCH 1/2] Only accept DA and DA2 when they end in 'c', stops them being confused with theme responses.. GitHub issue 4561. --- tty-keys.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tty-keys.c b/tty-keys.c index e36e7b65..267b5379 100644 --- a/tty-keys.c +++ b/tty-keys.c @@ -1422,14 +1422,16 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, return (1); /* Copy the rest up to a c. */ - for (i = 0; i < (sizeof tmp); i++) { + for (i = 0; i < sizeof tmp; i++) { if (3 + i == len) return (1); - if (buf[3 + i] == 'c') + if (buf[3 + i] >= 'a' && buf[3 + i] <= 'z') break; tmp[i] = buf[3 + i]; } - if (i == (sizeof tmp)) + if (i == sizeof tmp) + return (-1); + if (buf[3 + i] != 'c') return (-1); tmp[i] = '\0'; *size = 4 + i; @@ -1504,14 +1506,16 @@ tty_keys_device_attributes2(struct tty *tty, const char *buf, size_t len, return (1); /* Copy the rest up to a c. */ - for (i = 0; i < (sizeof tmp); i++) { + for (i = 0; i < sizeof tmp; i++) { if (3 + i == len) return (1); - if (buf[3 + i] == 'c') + if (buf[3 + i] >= 'a' && buf[3 + i] <= 'z') break; tmp[i] = buf[3 + i]; } - if (i == (sizeof tmp)) + if (i == sizeof tmp) + return (-1); + if (buf[3 + i] != 'c') return (-1); tmp[i] = '\0'; *size = 4 + i; From 6549aaf393d3f2db0afa33f6451b22cdc0d80b47 Mon Sep 17 00:00:00 2001 From: nicm Date: Sat, 19 Jul 2025 19:30:37 +0000 Subject: [PATCH 2/2] yyerror should be void. --- cmd-parse.y | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd-parse.y b/cmd-parse.y index 594e8cb3..843403a4 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -32,7 +32,7 @@ static int yylex(void); static int yyparse(void); -static int printflike(1,2) yyerror(const char *, ...); +static void printflike(1,2) yyerror(const char *, ...); static char *yylex_token(int); static char *yylex_format(void); @@ -1127,7 +1127,7 @@ cmd_parse_from_arguments(struct args_value *values, u_int count, return (&pr); } -static int printflike(1, 2) +static void printflike(1, 2) yyerror(const char *fmt, ...) { struct cmd_parse_state *ps = &parse_state; @@ -1136,7 +1136,7 @@ yyerror(const char *fmt, ...) char *error; if (ps->error != NULL) - return (0); + return; va_start(ap, fmt); xvasprintf(&error, fmt, ap); @@ -1144,7 +1144,6 @@ yyerror(const char *fmt, ...) ps->error = cmd_parse_get_error(pi->file, pi->line, error); free(error); - return (0); } static int