nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit e2027aee152352948ff3e2de03d00310bbcdc65b
parent 97f6ae526702de3d3698d212a7aa9a509590c80f
Author: Rishabh Dave <rishabhddave@gmail.com>
Date:   Wed, 14 Sep 2016 17:19:53 +0530

rcfile: reject key names that are wrong or too long

Meta keys should have a dash as second character, and apart from ^Space
and M-Space key names should be at most two or three characters long.

This fixes https://savannah.gnu.org/bugs/?44688.

Reviewed-by: Benno Schulenberg <bensberg@justemail.net>
Signed-off-by: Rishabh Dave <rishabhddave@gmail.com>

Diffstat:
Msrc/rcfile.c | 6+++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/rcfile.c b/src/rcfile.c @@ -399,7 +399,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[0] == 'M' && 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; }