forked from pool/readline
Update to readline 8.2 patchlevel 7
OBS-URL: https://build.opensuse.org/package/show/Base:System/readline?expand=0&rev=35
This commit is contained in:
parent
34f3d7ddc2
commit
528eed1bd6
@ -5,7 +5,7 @@
|
||||
|
||||
--- lib/readline/input.c
|
||||
+++ lib/readline/input.c 2018-11-29 08:29:58.432878428 +0000
|
||||
@@ -799,6 +799,8 @@ rl_read_key (void)
|
||||
@@ -801,6 +801,8 @@ rl_read_key (void)
|
||||
return (c);
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
int
|
||||
rl_getc (FILE *stream)
|
||||
{
|
||||
@@ -846,7 +848,10 @@ rl_getc (FILE *stream)
|
||||
@@ -862,7 +864,10 @@ rl_getc (FILE *stream)
|
||||
/* If zero characters are returned, then the file that we are
|
||||
reading from is empty! Return EOF in that case. */
|
||||
if (result == 0)
|
||||
|
@ -1,3 +1,31 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 21 07:04:06 UTC 2023 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
- Add upstream patch readline82-002
|
||||
* It's possible for readline to try to zero out a line that's not null-
|
||||
terminated, leading to a memory fault.
|
||||
- Add upstream patch readline82-003
|
||||
- Add upstream patch readline82-004
|
||||
- Add upstream patch readline82-005
|
||||
* If an application is using readline in callback mode, and a signal arrives
|
||||
after readline checks for it in rl_callback_read_char() but before it
|
||||
restores the application's signal handlers, it won't get processed until the
|
||||
next time the application calls rl_callback_read_char(). Readline needs to
|
||||
check for and resend any pending signals after restoring the application's
|
||||
signal handlers.
|
||||
- Add upstream patch readline82-006
|
||||
* This is a variant of the same issue as the one fixed by patch 5. In this
|
||||
case, the signal arrives and is pending before readline calls rl_getc().
|
||||
When this happens, the pending signal will be handled by the loop, but may
|
||||
alter or destroy some state that the callback uses. Readline needs to treat
|
||||
this case the same way it would if a signal interrupts pselect/select, so
|
||||
compound operations like searches and reading numeric arguments get cleaned
|
||||
up properly.
|
||||
- Add upstream patch readline82-007
|
||||
* If readline is called with no prompt, it should display a newline if return
|
||||
is typed on an empty line. It should still suppress the final newline if
|
||||
return is typed on the last (empty) line of a multi-line command.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 21 08:36:57 UTC 2022 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package readline
|
||||
#
|
||||
# Copyright (c) 2022 SUSE LLC
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -34,7 +34,19 @@ Source4: https://tiswww.case.edu/php/chet/gpgkey.asc#/%{name}.keyring
|
||||
# signatures for official patches
|
||||
# official patches
|
||||
Patch101: readline82-001
|
||||
Patch102: readline82-002
|
||||
Patch103: readline82-003
|
||||
Patch104: readline82-004
|
||||
Patch105: readline82-005
|
||||
Patch106: readline82-006
|
||||
Patch107: readline82-007
|
||||
Source101: readline82-001.sig
|
||||
Source102: readline82-002.sig
|
||||
Source103: readline82-003.sig
|
||||
Source104: readline82-004.sig
|
||||
Source105: readline82-005.sig
|
||||
Source106: readline82-006.sig
|
||||
Source107: readline82-007.sig
|
||||
# local patches
|
||||
Patch200: readline-%{version}.dif
|
||||
Patch201: readline-6.3-input.dif
|
||||
@ -105,16 +117,22 @@ as well as programming with the interface of the readline library.
|
||||
%prep
|
||||
%setup -q -n readline-%{version}%{rextend}
|
||||
# official patches
|
||||
%patch101 -p0
|
||||
%patch -P101 -p0
|
||||
%patch -P102 -p0
|
||||
%patch -P103 -p0
|
||||
%patch -P104 -p0
|
||||
%patch -P105 -p0
|
||||
%patch -P106 -p0
|
||||
%patch -P107 -p0
|
||||
# local patches
|
||||
%patch201 -p2 -b .zerotty
|
||||
%patch202 -p2 -b .conf
|
||||
%patch203 -p2 -b .metamode
|
||||
%patch205 -b .xm
|
||||
%patch206 -b .destdir
|
||||
%patch207 -p2 -b .tmp
|
||||
%patch208 -p2 -b .screen
|
||||
%patch200 -b .0
|
||||
%patch -P201 -p2 -b .zerotty
|
||||
%patch -P202 -p2 -b .conf
|
||||
%patch -P203 -p2 -b .metamode
|
||||
%patch -P205 -b .xm
|
||||
%patch -P206 -b .destdir
|
||||
%patch -P207 -p2 -b .tmp
|
||||
%patch -P208 -p2 -b .screen
|
||||
%patch -P200 -b .0
|
||||
|
||||
%build
|
||||
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
||||
|
48
readline82-002
Normal file
48
readline82-002
Normal file
@ -0,0 +1,48 @@
|
||||
READLINE PATCH REPORT
|
||||
=====================
|
||||
|
||||
Readline-Release: 8.2
|
||||
Patch-ID: readline82-002
|
||||
|
||||
Bug-Reported-by: srobertson@peratonlabs.com
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00049.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
It's possible for readline to try to zero out a line that's not null-
|
||||
terminated, leading to a memory fault.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../readline-8.2-patched/display.c 2022-04-05 10:47:31.000000000 -0400
|
||||
--- display.c 2022-12-13 13:11:22.000000000 -0500
|
||||
***************
|
||||
*** 2684,2692 ****
|
||||
|
||||
if (visible_line)
|
||||
! {
|
||||
! temp = visible_line;
|
||||
! while (*temp)
|
||||
! *temp++ = '\0';
|
||||
! }
|
||||
rl_on_new_line ();
|
||||
forced_display++;
|
||||
--- 2735,2740 ----
|
||||
|
||||
if (visible_line)
|
||||
! memset (visible_line, 0, line_size);
|
||||
!
|
||||
rl_on_new_line ();
|
||||
forced_display++;
|
||||
*** ../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
|
BIN
readline82-002.sig
Normal file
BIN
readline82-002.sig
Normal file
Binary file not shown.
43
readline82-003
Normal file
43
readline82-003
Normal file
@ -0,0 +1,43 @@
|
||||
READLINE PATCH REPORT
|
||||
=====================
|
||||
|
||||
Readline-Release: 8.2
|
||||
Patch-ID: readline82-003
|
||||
|
||||
Bug-Reported-by: Stefan Klinger <readline-gnu.org@stefan-klinger.de>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-08/msg00018.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
The custom color prefix that readline uses to color possible completions
|
||||
must have a leading `.'.
|
||||
|
||||
*** ../readline-8.2-patched/colors.c 2021-12-08 11:38:25.000000000 -0500
|
||||
--- colors.c 2023-08-28 16:40:04.000000000 -0400
|
||||
***************
|
||||
*** 74,78 ****
|
||||
static void restore_default_color (void);
|
||||
|
||||
! #define RL_COLOR_PREFIX_EXTENSION "readline-colored-completion-prefix"
|
||||
|
||||
COLOR_EXT_TYPE *_rl_color_ext_list = 0;
|
||||
--- 74,78 ----
|
||||
static void restore_default_color (void);
|
||||
|
||||
! #define RL_COLOR_PREFIX_EXTENSION ".readline-colored-completion-prefix"
|
||||
|
||||
COLOR_EXT_TYPE *_rl_color_ext_list = 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
|
||||
|
||||
! 2
|
||||
--- 1,3 ----
|
||||
# Do not edit -- exists only for use by patch
|
||||
|
||||
! 3
|
BIN
readline82-003.sig
Normal file
BIN
readline82-003.sig
Normal file
Binary file not shown.
65
readline82-004
Normal file
65
readline82-004
Normal file
@ -0,0 +1,65 @@
|
||||
READLINE PATCH REPORT
|
||||
=====================
|
||||
|
||||
Readline-Release: 8.2
|
||||
Patch-ID: readline82-004
|
||||
|
||||
Bug-Reported-by: Henry Bent <henry.r.bent@gmail.com>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00044.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
There are systems that supply one of select or pselect, but not both.
|
||||
|
||||
*** ../readline-8.2-patched/input.c 2022-04-08 15:43:24.000000000 -0400
|
||||
--- input.c 2022-11-28 09:41:08.000000000 -0500
|
||||
***************
|
||||
*** 152,156 ****
|
||||
--- 152,158 ----
|
||||
int _rl_timeout_init (void);
|
||||
int _rl_timeout_sigalrm_handler (void);
|
||||
+ #if defined (RL_TIMEOUT_USE_SELECT)
|
||||
int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
|
||||
+ #endif
|
||||
|
||||
static void _rl_timeout_handle (void);
|
||||
***************
|
||||
*** 249,253 ****
|
||||
int chars_avail, k;
|
||||
char input;
|
||||
! #if defined(HAVE_SELECT)
|
||||
fd_set readfds, exceptfds;
|
||||
struct timeval timeout;
|
||||
--- 251,255 ----
|
||||
int chars_avail, k;
|
||||
char input;
|
||||
! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
|
||||
fd_set readfds, exceptfds;
|
||||
struct timeval timeout;
|
||||
***************
|
||||
*** 806,810 ****
|
||||
unsigned char c;
|
||||
int fd;
|
||||
! #if defined (HAVE_PSELECT)
|
||||
sigset_t empty_set;
|
||||
fd_set readfds;
|
||||
--- 815,819 ----
|
||||
unsigned char c;
|
||||
int fd;
|
||||
! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
|
||||
sigset_t empty_set;
|
||||
fd_set readfds;
|
||||
*** ../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
|
||||
|
||||
! 3
|
||||
--- 1,3 ----
|
||||
# Do not edit -- exists only for use by patch
|
||||
|
||||
! 4
|
BIN
readline82-004.sig
Normal file
BIN
readline82-004.sig
Normal file
Binary file not shown.
50
readline82-005
Normal file
50
readline82-005
Normal file
@ -0,0 +1,50 @@
|
||||
READLINE PATCH REPORT
|
||||
=====================
|
||||
|
||||
Readline-Release: 8.2
|
||||
Patch-ID: readline82-005
|
||||
|
||||
Bug-Reported-by: Simon Marchi <simon.marchi@polymtl.ca>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00005.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
If an application is using readline in callback mode, and a signal arrives
|
||||
after readline checks for it in rl_callback_read_char() but before it
|
||||
restores the application's signal handlers, it won't get processed until the
|
||||
next time the application calls rl_callback_read_char(). Readline needs to
|
||||
check for and resend any pending signals after restoring the application's
|
||||
signal handlers.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../readline-8.2-patched/callback.c 2022-04-29 12:02:56.000000000 -0400
|
||||
--- callback.c 2022-10-11 10:59:06.000000000 -0400
|
||||
***************
|
||||
*** 116,120 ****
|
||||
do { \
|
||||
if (rl_persistent_signal_handlers == 0) \
|
||||
! rl_clear_signals (); \
|
||||
return; \
|
||||
} while (0)
|
||||
--- 116,123 ----
|
||||
do { \
|
||||
if (rl_persistent_signal_handlers == 0) \
|
||||
! { \
|
||||
! rl_clear_signals (); \
|
||||
! if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
|
||||
! } \
|
||||
return; \
|
||||
} while (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
|
||||
|
||||
! 4
|
||||
--- 1,3 ----
|
||||
# Do not edit -- exists only for use by patch
|
||||
|
||||
! 5
|
BIN
readline82-005.sig
Normal file
BIN
readline82-005.sig
Normal file
Binary file not shown.
99
readline82-006
Normal file
99
readline82-006
Normal file
@ -0,0 +1,99 @@
|
||||
READLINE PATCH REPORT
|
||||
=====================
|
||||
|
||||
Readline-Release: 8.2
|
||||
Patch-ID: readline82-006
|
||||
|
||||
Bug-Reported-by: Tom de Vries <tdevries@suse.de>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00001.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
This is a variant of the same issue as the one fixed by patch 5. In this
|
||||
case, the signal arrives and is pending before readline calls rl_getc().
|
||||
When this happens, the pending signal will be handled by the loop, but may
|
||||
alter or destroy some state that the callback uses. Readline needs to treat
|
||||
this case the same way it would if a signal interrupts pselect/select, so
|
||||
compound operations like searches and reading numeric arguments get cleaned
|
||||
up properly.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../readline-8.2-patched/input.c 2022-12-22 16:15:48.000000000 -0500
|
||||
--- input.c 2023-01-10 11:53:45.000000000 -0500
|
||||
***************
|
||||
*** 812,816 ****
|
||||
rl_getc (FILE *stream)
|
||||
{
|
||||
! int result;
|
||||
unsigned char c;
|
||||
int fd;
|
||||
--- 812,816 ----
|
||||
rl_getc (FILE *stream)
|
||||
{
|
||||
! int result, ostate, osig;
|
||||
unsigned char c;
|
||||
int fd;
|
||||
***************
|
||||
*** 823,828 ****
|
||||
--- 823,842 ----
|
||||
while (1)
|
||||
{
|
||||
+ osig = _rl_caught_signal;
|
||||
+ ostate = rl_readline_state;
|
||||
+
|
||||
RL_CHECK_SIGNALS ();
|
||||
|
||||
+ #if defined (READLINE_CALLBACKS)
|
||||
+ /* Do signal handling post-processing here, but just in callback mode
|
||||
+ for right now because the signal cleanup can change some of the
|
||||
+ callback state, and we need to either let the application have a
|
||||
+ chance to react or abort some current operation that gets cleaned
|
||||
+ up by rl_callback_sigcleanup(). If not, we'll just run through the
|
||||
+ loop again. */
|
||||
+ if (osig != 0 && (ostate & RL_STATE_CALLBACK))
|
||||
+ goto postproc_signal;
|
||||
+ #endif
|
||||
+
|
||||
/* We know at this point that _rl_caught_signal == 0 */
|
||||
|
||||
***************
|
||||
*** 888,891 ****
|
||||
--- 902,908 ----
|
||||
|
||||
handle_error:
|
||||
+ osig = _rl_caught_signal;
|
||||
+ ostate = rl_readline_state;
|
||||
+
|
||||
/* If the error that we received was EINTR, then try again,
|
||||
this is simply an interrupted system call to read (). We allow
|
||||
***************
|
||||
*** 928,933 ****
|
||||
--- 945,959 ----
|
||||
#endif /* SIGALRM */
|
||||
|
||||
+ postproc_signal:
|
||||
+ /* POSIX says read(2)/pselect(2)/select(2) don't return EINTR for any
|
||||
+ reason other than being interrupted by a signal, so we can safely
|
||||
+ call the application's signal event hook. */
|
||||
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
|
||||
}
|
||||
}
|
||||
*** ../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
|
||||
|
||||
! 5
|
||||
--- 1,3 ----
|
||||
# Do not edit -- exists only for use by patch
|
||||
|
||||
! 6
|
BIN
readline82-006.sig
Normal file
BIN
readline82-006.sig
Normal file
Binary file not shown.
48
readline82-007
Normal file
48
readline82-007
Normal file
@ -0,0 +1,48 @@
|
||||
READLINE PATCH REPORT
|
||||
=====================
|
||||
|
||||
Readline-Release: 8.2
|
||||
Patch-ID: readline82-007
|
||||
|
||||
Bug-Reported-by: Kevin Pulo <kev@pulo.com.au>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-11/msg00002.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
If readline is called with no prompt, it should display a newline if return
|
||||
is typed on an empty line. It should still suppress the final newline if
|
||||
return is typed on the last (empty) line of a multi-line command.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../readline-8.2-patched/display.c 2022-04-05 10:47:31.000000000 -0400
|
||||
--- display.c 2022-12-13 13:11:22.000000000 -0500
|
||||
***************
|
||||
*** 3342,3348 ****
|
||||
&last_face[_rl_screenwidth - 1 + woff], 1);
|
||||
}
|
||||
! _rl_vis_botlin = 0;
|
||||
! if (botline_length > 0 || _rl_last_c_pos > 0)
|
||||
rl_crlf ();
|
||||
fflush (rl_outstream);
|
||||
rl_display_fixed++;
|
||||
--- 3394,3400 ----
|
||||
&last_face[_rl_screenwidth - 1 + woff], 1);
|
||||
}
|
||||
! if ((_rl_vis_botlin == 0 && botline_length == 0) || botline_length > 0 || _rl_last_c_pos > 0)
|
||||
rl_crlf ();
|
||||
+ _rl_vis_botlin = 0;
|
||||
fflush (rl_outstream);
|
||||
rl_display_fixed++;
|
||||
*** ../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
|
||||
|
||||
! 6
|
||||
--- 1,3 ----
|
||||
# Do not edit -- exists only for use by patch
|
||||
|
||||
! 7
|
BIN
readline82-007.sig
Normal file
BIN
readline82-007.sig
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user