diff options
author | Daniel Llorens <lloda@sarc.name> | 2021-05-27 11:56:24 +0200 |
---|---|---|
committer | Daniel Llorens <lloda@sarc.name> | 2021-05-27 12:00:18 +0200 |
commit | c1fd55d1747880ff2ea822e88a1c41482181cb49 (patch) | |
tree | 6032220ccba7715337447df669595eb19259170a | |
parent | 17aab66e75136cf23c7f0d4942b61d6947f98f9b (diff) | |
download | guile-c1fd55d1747880ff2ea822e88a1c41482181cb49.tar.gz |
Fix null dereference in readline initialization
* guile-readline/readline.c (init_bouncing_parens): Check that the keymap is
valid before using it.
-rw-r--r-- | guile-readline/readline.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/guile-readline/readline.c b/guile-readline/readline.c index 469d6ec7d..408ca55d7 100644 --- a/guile-readline/readline.c +++ b/guile-readline/readline.c @@ -431,12 +431,17 @@ static void init_bouncing_parens (); static void init_bouncing_parens () { - if (strncmp (rl_get_keymap_name (rl_get_keymap ()), "vi", 2)) - { - rl_bind_key (')', match_paren); - rl_bind_key (']', match_paren); - rl_bind_key ('}', match_paren); - } + Keymap km = rl_get_keymap (); + if (km) + if (strncmp (rl_get_keymap_name (km), "vi", 2)) + { + rl_bind_key (')', match_paren); + rl_bind_key (']', match_paren); + rl_bind_key ('}', match_paren); + } + else + scm_error (scm_misc_error_key, "", "readline has not been properly initialized", + SCM_EOL, SCM_EOL); } static int |