If you update this, you need to make sure that a compat package exists for libreadline.so.6 because many applications are linked against it.
Best, -Michael
On Tue, 2017-06-06 at 10:25 +0200, Marcel Lorenz wrote:
Signed-off-by: Marcel Lorenz marcel.lorenz@ipfire.org
config/rootfiles/common/readline | 8 +-- lfs/readline | 21 +++++--- src/patches/readline/readline63-001 | 43 --------------- src/patches/readline/readline63-002 | 44 --------------- src/patches/readline/readline63-003 | 47 ---------------- src/patches/readline/readline63-004 | 45 ---------------- src/patches/readline/readline63-005 | 58 -------------------- src/patches/readline/readline63-006 | 63 ---------------------- src/patches/readline/readline70-001 | 57 ++++++++++++++++++++ src/patches/readline/readline70-002 | 103 ++++++++++++++++++++++++++++++++++++ src/patches/readline/readline70-003 | 40 ++++++++++++++ 11 files changed, 219 insertions(+), 310 deletions(-) delete mode 100644 src/patches/readline/readline63-001 delete mode 100644 src/patches/readline/readline63-002 delete mode 100644 src/patches/readline/readline63-003 delete mode 100644 src/patches/readline/readline63-004 delete mode 100644 src/patches/readline/readline63-005 delete mode 100644 src/patches/readline/readline63-006 create mode 100644 src/patches/readline/readline70-001 create mode 100644 src/patches/readline/readline70-002 create mode 100644 src/patches/readline/readline70-003
diff --git a/config/rootfiles/common/readline b/config/rootfiles/common/readline index b2ac26d..412de70 100644 --- a/config/rootfiles/common/readline +++ b/config/rootfiles/common/readline @@ -8,11 +8,11 @@ #usr/include/readline/rltypedefs.h #usr/include/readline/tilde.h #usr/lib/libhistory.so -usr/lib/libhistory.so.6 -usr/lib/libhistory.so.6.3 +usr/lib/libhistory.so.7 +usr/lib/libhistory.so.7.0 #usr/lib/libreadline.so -usr/lib/libreadline.so.6 -usr/lib/libreadline.so.6.3 +usr/lib/libreadline.so.7 +usr/lib/libreadline.so.7.0 #usr/share/doc/readline #usr/share/doc/readline/CHANGES #usr/share/doc/readline/INSTALL diff --git a/lfs/readline b/lfs/readline index eb488e3..5f88228 100644 --- a/lfs/readline +++ b/lfs/readline @@ -1,7 +1,7 @@ ############################################################################# ## # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2016 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,13 +24,15 @@ include Config -VER = 6.3 +VER = 7.0 THISAPP = readline-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) +PROG = readline +PAK_VER = 1 ############################################################################# ## # Top-level Rules @@ -40,7 +42,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 33c8fb279e981274f485fd91da77e94a +$(DL_FILE)_MD5 = 205b03a87fc83dab653b628c59b9fc91 install : $(TARGET) @@ -63,6 +65,9 @@ $(patsubst %,$(DIR_DL)/%,$(objects)) : $(subst %,%_MD5,$(objects)) : @$(MD5) +dist:
- @$(PAK)
############################################################################# ## # Installation Details ############################################################################# ## @@ -71,9 +76,13 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
- for i in $$(seq 1 6); do \
cd $(DIR_APP) && patch -Np0 <
$(DIR_SRC)/src/patches/readline/readline63-$$(printf "%03d" "$${i}") || exit 1; \
- done
- #for i in $$(seq 1 6); do \
- # cd $(DIR_APP) && patch -Np0 <
$(DIR_SRC)/src/patches/readline/readline63-$$(printf "%03d" "$${i}") || exit 1; \
- #done
- # prevent in some cases to trigger a linking bug in ldconfig
- cd $(DIR_APP) &&sed -i '/MV.*old/d' Makefile.in
- cd $(DIR_APP) &&sed -i '/{OLDSUFF}/c:' support/shlib-install
cd $(DIR_APP) && ./configure --prefix=/usr --disable-static cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses diff --git a/src/patches/readline/readline63-001 b/src/patches/readline/readline63-001 deleted file mode 100644 index bae6a2f..0000000 --- a/src/patches/readline/readline63-001 +++ /dev/null @@ -1,43 +0,0 @@
READLINE PATCH REPORT
=====================
-Readline-Release: 6.3 -Patch-ID: readline63-001
-Bug-Reported-by: Daan van Rossum daan@flash.uchicago.edu -Bug-Reference-ID: 20140307072523.GA14250@flash.uchicago.edu -Bug-Reference-URL:
-Bug-Description:
-The `.' command in vi mode cannot undo multi-key commands beginning with -`c', `d', and `y' (command plus motion specifier).
-Patch (apply with `patch -p0'):
-*** ../readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- readline.c 2014-03-07 15:20:33.000000000 -0500 -*************** -*** 965,969 **** - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && -! rl_key_sequence_length == 1 && /* XXX */ - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); ---- 965,969 ---- - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && -! _rl_dispatching_keymap == vi_movement_keymap && - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); -*** ../readline-6.3/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 - -! 1 diff --git a/src/patches/readline/readline63-002 b/src/patches/readline/readline63-002 deleted file mode 100644 index 0e79f13..0000000 --- a/src/patches/readline/readline63-002 +++ /dev/null @@ -1,44 +0,0 @@
READLINE PATCH REPORT
=====================
-Readline-Release: 6.3 -Patch-ID: readline63-002
-Bug-Reported-by: Anatol Pomozov anatol.pomozov@gmail.com -Bug-Reference-ID: <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ @mail.gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014 -03/msg00010.html
-Bug-Description:
-When in callback mode, some readline commands can cause readline to seg -fault by passing invalid contexts to callback functions.
-Patch (apply with `patch -p0'):
-*** ../readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- readline.c 2014-03-10 14:15:02.000000000 -0400 -*************** -*** 745,749 **** - - RL_CHECK_SIGNALS (); -! if (r == 0) /* success! */ - { - _rl_keyseq_chain_dispose (); ---- 745,750 ---- - - RL_CHECK_SIGNALS (); -! /* We only treat values < 0 specially to simulate recursion. */ -! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ - { - _rl_keyseq_chain_dispose (); -*** ../readline-6.3/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/src/patches/readline/readline63-003 b/src/patches/readline/readline63-003 deleted file mode 100644 index d2cad94..0000000 --- a/src/patches/readline/readline63-003 +++ /dev/null @@ -1,47 +0,0 @@
READLINE PATCH REPORT
=====================
-Readline-Release: 6.3 -Patch-ID: readline63-003
-Bug-Reported-by: -Bug-Reference-ID: -Bug-Reference-URL:
-Bug-Description:
-There are debugging functions in the readline release that are theoretically -exploitable as security problems. They are not public functions, but have -global linkage.
-Patch (apply with `patch -p0'):
-*** ../readline-6.3/util.c 2013-09-02 13:36:12.000000000 -0400 ---- util.c 2014-03-20 10:25:53.000000000 -0400 -*************** -*** 477,480 **** ---- 479,483 ---- - } - -+ #if defined (DEBUG) - #if defined (USE_VARARGS) - static FILE *_rl_tracefp; -*************** -*** 539,542 **** ---- 542,546 ---- - } - #endif -+ #endif /* DEBUG */ - - -*** ../readline-6.3/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 diff --git a/src/patches/readline/readline63-004 b/src/patches/readline/readline63-004 deleted file mode 100644 index 3cd89e3..0000000 --- a/src/patches/readline/readline63-004 +++ /dev/null @@ -1,45 +0,0 @@
READLINE PATCH REPORT
=====================
-Readline-Release: 6.3 -Patch-ID: readline63-004
-Bug-Reported-by: Egmont Koblinger egmont@gmail.com -Bug-Reference-ID: <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg @mail.gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/ msg00153.html
-Bug-Description:
-The signal handling changes to bash and readline (to avoid running any code -in a signal handler context) cause the cursor to be placed on the wrong -line of a multi-line command after a ^C interrupts editing.
-Patch (apply with `patch -p0'):
-*** ../readline-6.3-patched/display.c 2013-12-27 13:10:56.000000000 -0500 ---- display.c 2014-03-27 11:52:45.000000000 -0400 -*************** -*** 2678,2682 **** - if (_rl_echoing_p) - { -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin = 0; - fflush (rl_outstream); ---- 2678,2683 ---- - if (_rl_echoing_p) - { -! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin = 0; - fflush (rl_outstream); -*** ../readline-6.3/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 diff --git a/src/patches/readline/readline63-005 b/src/patches/readline/readline63-005 deleted file mode 100644 index 8a63738..0000000 --- a/src/patches/readline/readline63-005 +++ /dev/null @@ -1,58 +0,0 @@
READLINE PATCH REPORT
=====================
-Readline-Release: 6.3 -Patch-ID: readline63-005
-Bug-Reported-by: Juergen Daubert jue@jue.li -Bug-Reference-ID: 20140303180430.GA7346@jue.netz -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014 -03/msg00002.html
-Bug-Description:
-There are still applications using the deprecated Function/VFunction/etc. -typedefs in rltypedefs.h. This patch restores the typedefs, but attempts -to mark them as deprecated using gcc/clang attributes. Thanks to Max Horn -for the suggestion.
-Patch (apply with `patch -p0'):
-*** ../readline-6.3-patched/rltypedefs.h 2011-03-26 14:53:31.000000000 -0400 ---- rltypedefs.h 2014-04-10 11:30:45.000000000 -0400 -*************** -*** 27,30 **** ---- 27,49 ---- - #endif - -+ /* Old-style, attempt to mark as deprecated in some way people will notice. */ -+ -+ #if !defined (_FUNCTION_DEF) -+ # define _FUNCTION_DEF -+ -+ #if defined(__GNUC__) || defined(__clang__) -+ typedef int Function () __attribute__ ((deprecated)); -+ typedef void VFunction () __attribute__ ((deprecated)); -+ typedef char *CPFunction () __attribute__ ((deprecated)); -+ typedef char **CPPFunction () __attribute__ ((deprecated)); -+ #else -+ typedef int Function (); -+ typedef void VFunction (); -+ typedef char *CPFunction (); -+ typedef char **CPPFunction (); -+ #endif -+ -+ #endif /* _FUNCTION_DEF */ -+ - /* New style. */ - -*** ../readline-6.3/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 diff --git a/src/patches/readline/readline63-006 b/src/patches/readline/readline63-006 deleted file mode 100644 index a3f0930..0000000 --- a/src/patches/readline/readline63-006 +++ /dev/null @@ -1,63 +0,0 @@
READLINE PATCH REPORT
=====================
-Readline-Release: 6.3 -Patch-ID: readline63-006
-Bug-Reported-by: Trond.Endrestol@ximalas.info -Bug-Reference-ID: <alpine.BSF.2.03.1404192114310.1973@enterprise.ximal as.info> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/ msg00069.html
-Bug-Description:
-Using reverse-i-search when horizontal scrolling is enabled does not redisplay -the entire line containing the successful search results.
-Patch (apply with `patch -p0'):
-*** ../readline-6.3-patched/display.c 2014-04-08 18:19:36.000000000 -0400 ---- display.c 2014-04-20 18:32:52.000000000 -0400 -*************** -*** 1638,1642 **** - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line == 0 && !_rl_horizontal_scroll_mode && - current_invis_chars != visible_wrap_offset) - { ---- 1638,1642 ---- - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ - current_invis_chars != visible_wrap_offset) - { -*************** -*** 1826,1831 **** - _rl_last_c_pos += bytes_to_insert; - - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! goto clear_rest_of_line; - } - } ---- 1826,1836 ---- - _rl_last_c_pos += bytes_to_insert; - -+ /* XXX - we only want to do this if we are at the end of the line -+ so we move there with _rl_move_cursor_relative */ - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! { -! _rl_move_cursor_relative (ne-new, new); -! goto clear_rest_of_line; -! } - } - } -*** ../readline-6.3/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 diff --git a/src/patches/readline/readline70-001 b/src/patches/readline/readline70-001 new file mode 100644 index 0000000..437a440 --- /dev/null +++ b/src/patches/readline/readline70-001 @@ -0,0 +1,57 @@
READLINE PATCH REPORT
=====================
+Readline-Release: 7.0 +Patch-ID: readline70-001
+Bug-Reported-by: Sean Zha freeman_cha@hotmail.com +Bug-Reference-ID: <BN3PR01MB13657D9303EB94BF6E54216E8CCA0@BN3PR01MB1365 .prod.exchangelabs.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/ms g00107.html
+Bug-Description:
+Readline-7.0 changed the way the history list is initially allocated to reduce +the number of reallocations and copies. Users who set the readline +history-size variable to a very large number to essentially unlimit the size +of the history list will get memory allocation errors
+Patch (apply with `patch -p0'):
+*** ../readline-7.0/history.c 2015-12-28 13:50:31.000000000 -0500 +--- history.c 2016-09-30 14:28:40.000000000 -0400 +*************** +*** 58,61 **** +--- 58,63 ---- + #define DEFAULT_HISTORY_INITIAL_SIZE 502 + ++ #define MAX_HISTORY_INITIAL_SIZE 8192 ++ + /* The number of slots to increase the_history by. */ + #define DEFAULT_HISTORY_GROW_SIZE 50 +*************** +*** 308,312 **** + { + if (history_stifled && history_max_entries > 0) +! history_size = history_max_entries + 2; + else + history_size = DEFAULT_HISTORY_INITIAL_SIZE; +--- 310,316 ---- + { + if (history_stifled && history_max_entries > 0) +! history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE) +! ? MAX_HISTORY_INITIAL_SIZE +! : history_max_entries + 2; + else + history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+*** ../readline-7.0/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 + +! 0 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 1 diff --git a/src/patches/readline/readline70-002 b/src/patches/readline/readline70-002 new file mode 100644 index 0000000..ac76dae --- /dev/null +++ b/src/patches/readline/readline70-002 @@ -0,0 +1,103 @@
READLINE PATCH REPORT
=====================
+Readline-Release: 7.0 +Patch-ID: readline70-002
+Bug-Reported-by: Hong Cho hong.cho@citrix.com +Bug-Reference-ID: <c30b5fe62b2543af8297e47ca487c29c@SJCPEX02CL02.citri te.net> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2016 -12/msg00002.html
+Bug-Description:
+There is a race condition in add_history() that can be triggered by a fatal +signal arriving between the time the history length is updated and the time +the history list update is completed. A later attempt to reference an +invalid history entry can cause a crash.
+Patch (apply with `patch -p0'):
+*** ../readline-7.0-patched/history.c 2016-11-11 13:42:49.000000000 -0500 +--- history.c 2016-12-05 10:37:51.000000000 -0500 +*************** +*** 280,283 **** +--- 280,284 ---- + { + HIST_ENTRY *temp; ++ int new_length; + + if (history_stifled && (history_length == history_max_entries)) +*************** +*** 296,306 **** + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ +- #if 0 +- for (i = 0; i < history_length; i++) +- the_history[i] = the_history[i + 1]; +- #else + memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *)); +- #endif + + history_base++; + } +--- 297,303 ---- + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ + memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *)); + ++ new_length = history_length; + history_base++; + } +*************** +*** 316,320 **** + history_size = DEFAULT_HISTORY_INITIAL_SIZE; + the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); +! history_length = 1; + } + else +--- 313,317 ---- + history_size = DEFAULT_HISTORY_INITIAL_SIZE; + the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); +! new_length = 1; + } + else +*************** +*** 326,330 **** + xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); + } +! history_length++; + } + } +--- 323,327 ---- + xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); + } +! new_length = history_length + 1; + } + } +*************** +*** 332,337 **** + temp = alloc_history_entry ((char *)string, hist_inittime ()); + +! the_history[history_length] = (HIST_ENTRY *)NULL; +! the_history[history_length - 1] = temp; + } + +--- 329,335 ---- + temp = alloc_history_entry ((char *)string, hist_inittime ()); + +! the_history[new_length] = (HIST_ENTRY *)NULL; +! the_history[new_length - 1] = temp; +! history_length = new_length; + } + +*** ../readline-7.0/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/src/patches/readline/readline70-003 b/src/patches/readline/readline70-003 new file mode 100644 index 0000000..a19cae6 --- /dev/null +++ b/src/patches/readline/readline70-003 @@ -0,0 +1,40 @@
READLINE PATCH REPORT
=====================
+Readline-Release: 7.0 +Patch-ID: readline70-003
+Bug-Reported-by: Frédéric Brière fbriere@fbriere.net +Bug-Reference-ID: 20170120180724.7ydq7fb2hsp366dj@fabul.fbriere.net +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2017 -01/msg00002.html
+Bug-Description:
+Readline-7.0 uses pselect(2) to allow readline to handle signals that do not +interrupt read(2), such as SIGALRM, before reading another character. The +signal mask used in the pselect call did not take into account signals the +calling application blocked before calling readline().
+Patch (apply with `patch -p0'):
+*** ../readline-7.0-patched/input.c 2016-08-30 10:21:47.000000000 -0400 +--- input.c 2017-01-23 10:21:56.000000000 -0500 +*************** +*** 514,517 **** +--- 514,518 ---- + #if defined (HAVE_PSELECT) + sigemptyset (&empty_set); ++ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); + FD_ZERO (&readfds); + FD_SET (fileno (stream), &readfds); +*** ../readline-7.0/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