mirror of
git://slackware.nl/current.git
synced 2025-01-14 08:01:11 +01:00
94 lines
2.8 KiB
Text
94 lines
2.8 KiB
Text
|
READLINE PATCH REPORT
|
||
|
=====================
|
||
|
|
||
|
Readline-Release: 8.2
|
||
|
Patch-ID: readline82-012
|
||
|
|
||
|
Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
|
||
|
Bug-Reference-ID: <CAMu=BroaH+41uumYt89FPqt8Fsatj-d6mZzmPV2HZYjtcbvbvw@mail.gmail.com>
|
||
|
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-11/msg00019.html
|
||
|
|
||
|
Bug-Description:
|
||
|
|
||
|
If a user happens to bind do-lowercase-version to something that isn't a
|
||
|
capital letter, so _rl_to_lower doesn't change anything and the result is
|
||
|
still bound to do-lowercase-version, readline can recurse infinitely.
|
||
|
|
||
|
Patch (apply with `patch -p0'):
|
||
|
|
||
|
*** ../readline-8.2-patched/readline.c Thu Aug 11 18:35:37 2022
|
||
|
--- readline.c Fri Feb 2 12:05:36 2024
|
||
|
***************
|
||
|
*** 900,905 ****
|
||
|
/* Special case rl_do_lowercase_version (). */
|
||
|
if (func == rl_do_lowercase_version)
|
||
|
! /* Should we do anything special if key == ANYOTHERKEY? */
|
||
|
! return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
|
||
|
|
||
|
rl_executing_keymap = map;
|
||
|
--- 912,926 ----
|
||
|
/* Special case rl_do_lowercase_version (). */
|
||
|
if (func == rl_do_lowercase_version)
|
||
|
! {
|
||
|
! /* Should we do anything special if key == ANYOTHERKEY? */
|
||
|
! newkey = _rl_to_lower ((unsigned char)key);
|
||
|
! if (newkey != key)
|
||
|
! return (_rl_dispatch (newkey, map));
|
||
|
! else
|
||
|
! {
|
||
|
! rl_ding (); /* gentle failure */
|
||
|
! return 0;
|
||
|
! }
|
||
|
! }
|
||
|
|
||
|
rl_executing_keymap = map;
|
||
|
***************
|
||
|
*** 1110,1114 ****
|
||
|
func = m[ANYOTHERKEY].function;
|
||
|
if (type == ISFUNC && func == rl_do_lowercase_version)
|
||
|
! r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map);
|
||
|
else if (type == ISFUNC)
|
||
|
{
|
||
|
--- 1131,1139 ----
|
||
|
func = m[ANYOTHERKEY].function;
|
||
|
if (type == ISFUNC && func == rl_do_lowercase_version)
|
||
|
! {
|
||
|
! int newkey = _rl_to_lower ((unsigned char)key);
|
||
|
! /* check that there is actually a lowercase version to avoid infinite recursion */
|
||
|
! r = (newkey != key) ? _rl_dispatch (newkey, map) : 1;
|
||
|
! }
|
||
|
else if (type == ISFUNC)
|
||
|
{
|
||
|
|
||
|
*** ../readline-8.2-patched/isearch.c Thu Aug 11 18:35:37 2022
|
||
|
--- isearch.c Fri Feb 2 12:05:36 2024
|
||
|
***************
|
||
|
*** 429,433 ****
|
||
|
f = cxt->keymap[c].function;
|
||
|
if (f == rl_do_lowercase_version)
|
||
|
! f = cxt->keymap[_rl_to_lower (c)].function;
|
||
|
}
|
||
|
|
||
|
--- 431,439 ----
|
||
|
f = cxt->keymap[c].function;
|
||
|
if (f == rl_do_lowercase_version)
|
||
|
! {
|
||
|
! f = cxt->keymap[_rl_to_lower (c)].function;
|
||
|
! if (f == rl_do_lowercase_version)
|
||
|
! f = rl_insert;
|
||
|
! }
|
||
|
}
|
||
|
|
||
|
|
||
|
*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
|
||
|
--- patchlevel 2014-03-21 08:28:40.000000000 -0400
|
||
|
***************
|
||
|
*** 1,3 ****
|
||
|
# Do not edit -- exists only for use by patch
|
||
|
|
||
|
! 11
|
||
|
--- 1,3 ----
|
||
|
# Do not edit -- exists only for use by patch
|
||
|
|
||
|
! 12
|