diff --git a/system/base/readline/files/readline83-002.patch b/system/base/readline/files/readline83-002.patch new file mode 100644 index 00000000..356318de --- /dev/null +++ b/system/base/readline/files/readline83-002.patch @@ -0,0 +1,44 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 8.3 +Patch-ID: readline83-002 + +Bug-Reported-by: Tobias Powalowski +Bug-Reference-ID: <6465ed69-d2da-4277-92cf-1046bc97ca60@pm.me> +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2025-07/msg00005.html + +Bug-Description: + +If an application calls rl_save_prompt, which sets rl_prompt to NULL, +without calling rl_set_prompt to set it to a new value, readline redisplay +can dereference a NULL pointer. + +Patch (apply with `patch -p0'): + +*** ../readline-8.3/display.c Fri May 2 09:20:32 2025 +--- display.c Sun Jul 6 17:16:28 2025 +*************** +*** 784,788 **** + /* Useful shorthand used by rl_redisplay, update_line, rl_move_cursor_relative */ + #define INVIS_FIRST() (local_prompt_invis_chars[0]) +! #define WRAP_OFFSET(line, offset) ((line <= prompt_last_screen_line) ? local_prompt_invis_chars[line] : 0) + + #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) +--- 784,788 ---- + /* Useful shorthand used by rl_redisplay, update_line, rl_move_cursor_relative */ + #define INVIS_FIRST() (local_prompt_invis_chars[0]) +! #define WRAP_OFFSET(line, offset) ((line <= prompt_last_screen_line && local_prompt_invis_chars) ? local_prompt_invis_chars[line] : 0) + + #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) +*** ../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 + +! 1 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 2 diff --git a/system/base/readline/files/readline83-003.patch b/system/base/readline/files/readline83-003.patch new file mode 100644 index 00000000..dd7fe4f1 --- /dev/null +++ b/system/base/readline/files/readline83-003.patch @@ -0,0 +1,78 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 8.3 +Patch-ID: readline83-003 + +Bug-Reported-by: penguin p +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2025-08/msg00080.html + +Bug-Description: + +A SIGINT during a reverse i-search can cause a segmentation fault due to +accessing data freed by a signal handler. + +Patch (apply with `patch -p0'): + +*** ../readline-8.3-patched/input.c Tue Jul 8 15:37:13 2025 +--- input.c Fri Aug 22 15:04:05 2025 +*************** +*** 976,984 **** + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); +! #if defined (READLINE_CALLBACKS) +! else if (osig == SIGINT && (ostate & RL_STATE_CALLBACK) && (ostate & (RL_STATE_ISEARCH|RL_STATE_NSEARCH|RL_STATE_NUMERICARG))) + /* just these cases for now */ + _rl_abort_internal (); +- #endif + } + } +--- 1004,1012 ---- + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); +! /* If the application's SIGINT handler returns, make sure we abort out of +! searches and numeric arguments because we've freed necessary state. */ +! if (osig == SIGINT && (ostate & (RL_STATE_ISEARCH|RL_STATE_NSEARCH|RL_STATE_NUMERICARG))) + /* just these cases for now */ + _rl_abort_internal (); + } + } +*** ../readline-8.3-patched/isearch.c Thu Jun 5 09:22:11 2025 +--- isearch.c Tue Aug 19 14:55:55 2025 +*************** +*** 890,899 **** + _rl_isearch_cleanup (_rl_search_cxt *cxt, int r) + { + if (r >= 0) + _rl_isearch_fini (cxt); + _rl_scxt_dispose (cxt, 0); +- _rl_iscxt = 0; +- +- RL_UNSETSTATE(RL_STATE_ISEARCH); + + return (r != 0); +--- 890,901 ---- + _rl_isearch_cleanup (_rl_search_cxt *cxt, int r) + { ++ RL_UNSETSTATE(RL_STATE_ISEARCH); ++ if (cxt == 0) ++ return (r != 0); ++ ++ _rl_iscxt = 0; + if (r >= 0) + _rl_isearch_fini (cxt); + _rl_scxt_dispose (cxt, 0); + + return (r != 0); +*** ../readline-8.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 +--- patchlevel 2024-03-21 08:28:40.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 2 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 3 diff --git a/system/base/readline/pspec.xml b/system/base/readline/pspec.xml index 3f25bc44..4e995d8b 100644 --- a/system/base/readline/pspec.xml +++ b/system/base/readline/pspec.xml @@ -1,5 +1,5 @@ - + readline @@ -18,8 +18,8 @@ readline83-001.patch - - readline-8.3-iwd-crash.patch + readline83-002.patch + readline83-003.patch @@ -70,6 +70,13 @@ + + 2025-12-17 + 8.3.1 + Version bump. + Pisi Linux Community + admin@pisilinux.org + 2025-11-16 8.3.1