From f49f9c9dedf7ed27fd2497fd332c21928fcedf94 Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Mon, 12 Sep 2016 22:09:15 +0530 Subject: [PATCH] rcfile: reject key names that are wrong or too long M-Space, ^Space, Ins and Del remain exceptions. This fixes http://savannah.gnu.org/bugs/?44688. Signed-off-by: Rishabh Dave --- src/rcfile.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rcfile.c b/src/rcfile.c index b078f03..5074568 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -401,7 +401,11 @@ void parse_binding(char *ptr, bool dobind) else if (keycopy[0] != '^' && keycopy[0] != 'M' && keycopy[0] != 'F') { rcfile_error(N_("Key name must begin with \"^\", \"M\", or \"F\"")); goto free_copy; - } else if (keycopy[0] == '^' && (keycopy[1] < 64 || keycopy[1] > 127)) { + } else if ((keycopy[1] != '-' && keycopy[0] == '^' && + ((keycopy[1] < 64 || keycopy[1] > 127) || + (strlen(keycopy) > 2 && strcmp(keycopy, "^Space") != 0))) || + (strlen(keycopy) > 3 && strcmp(keycopy, "^Space") != 0 && + strcmp(keycopy, "M-Space") != 0)) { rcfile_error(N_("Key name %s is invalid"), keycopy); goto free_copy; } -- 2.7.4