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.ximalas.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/msg00107.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.citrite.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