diff --git a/ChangeLog b/ChangeLog index dc46d976287692e7fca8c0fefc7b42c798899279..7d4e5688745b60fffac3c1f2b2eba99f26e5d2c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ continuing after a discard. This fixes Savannah bug #47104. * src/files.c (get_full_path): Plug a sneaky memory leak. This fixes Savannah bug #47003 reported and solved by Mike Frysinger. + * src/rcfile.c (parse_binding): Allow only control sequences in the + proper range to be rebound. This fixes Savannah bug #47025. 2016-02-09 Benno Schulenberg <bensberg@justemail.net> * src/files.c (stat_with_alloc, open_buffer, write_file): Check the diff --git a/src/rcfile.c b/src/rcfile.c index 05bf90abb5e0d6fe67386e4121dc7738211fafe2..785cd901177cabe843f179e215b5344cb885bd6d 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -452,6 +452,9 @@ 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)) { + rcfile_error(N_("Key name %s is invalid"), keycopy); + goto free_copy; } if (dobind) {