[2/3] readline: update to 7.0
Message ID | 20170606082537.13830-2-marcel.lorenz@ipfire.org |
---|---|
State | Dropped |
Headers |
Return-Path: <development-bounces@lists.ipfire.org> Received: from mail01.ipfire.org (unknown [172.28.1.200]) by web02.ipfire.org (Postfix) with ESMTP id 95C1961C5F for <patchwork@ipfire.org>; Tue, 6 Jun 2017 10:25:56 +0200 (CEST) Received: from mail01.ipfire.org (localhost [IPv6:::1]) by mail01.ipfire.org (Postfix) with ESMTP id CF6FD2592; Tue, 6 Jun 2017 10:25:54 +0200 (CEST) Received: from localhost.localdomain (mail.ml-systec.de [87.140.105.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id B7DB521CA for <development@lists.ipfire.org>; Tue, 6 Jun 2017 10:25:48 +0200 (CEST) From: Marcel Lorenz <marcel.lorenz@ipfire.org> To: development@lists.ipfire.org Subject: [PATCH 2/3] readline: update to 7.0 Date: Tue, 6 Jun 2017 10:25:36 +0200 Message-Id: <20170606082537.13830-2-marcel.lorenz@ipfire.org> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170606082537.13830-1-marcel.lorenz@ipfire.org> References: <20170606082537.13830-1-marcel.lorenz@ipfire.org> MIME-Version: 1.0 Content-Type: text/plain; charset=y Content-Transfer-Encoding: 8bit X-BeenThere: development@lists.ipfire.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: IPFire development talk <development.lists.ipfire.org> List-Unsubscribe: <http://lists.ipfire.org/mailman/options/development>, <mailto:development-request@lists.ipfire.org?subject=unsubscribe> List-Archive: <http://lists.ipfire.org/pipermail/development/> List-Post: <mailto:development@lists.ipfire.org> List-Help: <mailto:development-request@lists.ipfire.org?subject=help> List-Subscribe: <http://lists.ipfire.org/mailman/listinfo/development>, <mailto:development-request@lists.ipfire.org?subject=subscribe> Errors-To: development-bounces@lists.ipfire.org Sender: "Development" <development-bounces@lists.ipfire.org> |
Message
Marcel Lorenz
June 6, 2017, 6:25 p.m. UTC
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
Comments
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