Hello community, here is the log from the commit of package readline for openSUSE:Factory checked in at 2019-01-29 14:37:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/readline (Old) and /work/SRC/openSUSE:Factory/.readline.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "readline" Tue Jan 29 14:37:35 2019 rev:4 rq:664074 version:8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/readline/readline.changes 2018-10-11 11:36:30.655470238 +0200 +++ /work/SRC/openSUSE:Factory/.readline.new.28833/readline.changes 2019-01-29 14:37:38.871607097 +0100 @@ -1,0 +2,25 @@ +Wed Jan 9 12:51:18 UTC 2019 - Dr. Werner Fink <[email protected]> + +- Update to readline-8.0 final + +------------------------------------------------------------------- +Fri Dec 21 13:12:27 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Update to readline-8.0-rc1 for testing + +------------------------------------------------------------------- +Thu Nov 29 08:39:29 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Update to readline-8.0-beta2 for testing + j. Readline now allows application-defined keymap names; there is a new public + function, rl_set_keymap_name(), to do that. + k. The "Insert" keypad key, if available, now puts readline into overwrite + mode. + readline-5.2-conf.patch +- Port and modify patches + * readline-6.2-metamode.patch + * readline-6.3-input.dif + * readline-7.0-screen.patch + * readline-8.0.dif + +------------------------------------------------------------------- @@ -4,0 +30,40 @@ + +------------------------------------------------------------------- +Thu Sep 20 07:38:14 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Update to readline-8.0-beta for testing + a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + c. There are default key bindings for control-arrow-key key combinations. + d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + h. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + i. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. +- Remove not used patch readline-6.2-endpw.dif +- Port and modify patches + * readline-5.2-conf.patch + * readline-6.2-metamode.patch + * readline-6.2-xmalloc.dif + * readline-6.3-destdir.patch + * readline-6.3-input.dif + * readline-6.3-rltrace.patch + * readline-7.0-screen.patch +- Port and rename patch readline-7.0.dif which is now readline-8.0.dif +- Modify baselibs.conf Old: ---- readline-6.2-endpw.dif readline-7.0-patches.tar.bz2 readline-7.0.dif readline-7.0.tar.gz New: ---- readline-8.0-patches.tar.bz2 readline-8.0.dif readline-8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ readline.spec ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.455606392 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.455606392 +0100 @@ -1,7 +1,7 @@ # # spec file for package readline # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -27,7 +27,7 @@ BuildRequires: pkg-config BuildRequires: sed %define rextend %nil -Version: 7.0 +Version: 8.0 Release: 0 Summary: The readline library License: GPL-3.0-or-later @@ -41,7 +41,6 @@ Patch1: readline-6.3-input.dif Patch2: readline-5.2-conf.patch Patch3: readline-6.2-metamode.patch -Patch4: readline-6.2-endpw.dif Patch5: readline-6.2-xmalloc.dif Patch6: readline-6.3-destdir.patch Patch7: readline-6.3-rltrace.patch @@ -53,7 +52,7 @@ standard command interpreter) for easy editing of command lines. This includes history and search functionality. -%package -n libreadline7 +%package -n libreadline8 Summary: The Readline Library Group: System/Libraries Provides: bash:/%{_lib}/libreadline.so.%{rl_major} @@ -61,7 +60,7 @@ Provides: readline = %{version} Obsoletes: readline <= 6.3 -%description -n libreadline7 +%description -n libreadline8 The readline library is used by the Bourne Again Shell (bash, the standard command interpreter) for easy editing of command lines. This includes history and search functionality. @@ -69,7 +68,7 @@ %package devel Summary: Development files for readline Group: Development/Libraries/C and C++ -Requires: libreadline7 = %{version} +Requires: libreadline8 = %{version} Requires: ncurses-devel Recommends: readline-doc = %{version} @@ -114,7 +113,6 @@ %patch1 -p2 -b .zerotty %patch2 -p2 -b .conf %patch3 -p2 -b .metamode -#%patch4 -p2 -b .endpw %patch5 -p0 -b .xm %patch6 -p0 -b .destdir %patch7 -p2 -b .tmp @@ -173,7 +171,7 @@ rl_signal_event_hook; }; EOF -CFLAGS="%{optflags} $LARGEFILE -D_GNU_SOURCE -Wall -g" +CFLAGS="%{optflags} $LARGEFILE -D_GNU_SOURCE -D_RPM_OPT_FLAGS -g" LDFLAGS="" cflags -Wuninitialized CFLAGS cflags -Wextra CFLAGS @@ -215,16 +213,18 @@ rm -vf %{buildroot}/%{_lib}/libreadline.so.%{version}*old rm -vf %{buildroot}/%{_lib}/libhistory.so rm -vf %{buildroot}/%{_lib}/libreadline.so -mkdir -p %{buildroot}/%{_libdir} +mkdir -p %{buildroot}/%{_libdir}/pkgconfig ln -sf /%{_lib}/libhistory.so.%{version} %{buildroot}/%{_libdir}/libhistory.so ln -sf /%{_lib}/libreadline.so.%{version} %{buildroot}/%{_libdir}/libreadline.so mv -vf %{buildroot}/%{_lib}/libhistory.a %{buildroot}/%{_libdir}/libhistory.a mv -vf %{buildroot}/%{_lib}/libreadline.a %{buildroot}/%{_libdir}/libreadline.a +mv -vf %{buildroot}/%{_lib}/pkgconfig/readline.pc \ + %{buildroot}/%{_libdir}/pkgconfig/readline.pc rm -vrf %{buildroot}%{_datadir}/readline/ -%post -n libreadline7 -p /sbin/ldconfig +%post -n libreadline8 -p /sbin/ldconfig -%postun -n libreadline7 -p /sbin/ldconfig +%postun -n libreadline8 -p /sbin/ldconfig %post doc %install_info --info-dir=%{_infodir} %{_infodir}/history.info.gz @@ -236,7 +236,7 @@ %install_info_delete --info-dir=%{_infodir} %{_infodir}/readline.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/rluserman.info.gz -%files -n libreadline7 +%files -n libreadline8 %license COPYING /%{_lib}/libhistory.so.%{rl_major} /%{_lib}/libhistory.so.%{version} @@ -247,6 +247,7 @@ %{_includedir}/readline/ %{_libdir}/libhistory.so %{_libdir}/libreadline.so +%{_libdir}/pkgconfig/readline.pc %files devel-static %{_libdir}/libhistory.a ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.475606367 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.479606363 +0100 @@ -1,8 +1,9 @@ -libreadline7 +libreadline8 obsoletes "readline-<targettype> <= <version>" provides "readline-<targettype> = <version>" readline-devel requires -readline-<targettype> - requires "libreadline7-<targettype> = <version>" + requires "libreadline8-<targettype> = <version>" conflicts "readline5-devel-<targettype>" conflicts "readline6-devel-<targettype>" + conflicts "readline7-devel-<targettype>" ++++++ readline-5.2-conf.patch ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.483606358 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.483606358 +0100 @@ -1,12 +1,12 @@ --- - lib/readline/bind.c | 55 ++++++++++++++++++++++++++++++++++--------- - lib/readline/doc/rluser.texi | 3 +- - lib/readline/rlconf.h | 2 - + lib/readline/bind.c | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- + lib/readline/doc/rluser.texi | 3 ++- + lib/readline/rlconf.h | 2 +- 3 files changed, 47 insertions(+), 13 deletions(-) --- lib/readline/bind.c -+++ lib/readline/bind.c 2017-04-26 13:07:22.115249970 +0000 -@@ -826,6 +826,9 @@ rl_function_of_keyseq (keyseq, map, type ++++ lib/readline/bind.c 2018-11-29 08:33:08.921317296 +0000 +@@ -850,6 +850,9 @@ rl_function_of_keyseq_len (const char *k /* The last key bindings file read. */ static char *last_readline_init_file = (char *)NULL; @@ -16,7 +16,7 @@ /* The file we're currently reading key bindings from. */ static const char *current_readline_init_file; static int current_readline_init_include_level; -@@ -891,11 +894,14 @@ rl_re_read_init_file (count, ignore) +@@ -917,11 +920,14 @@ rl_re_read_init_file (int count, int ign return r; } @@ -32,7 +32,7 @@ 4. /etc/inputrc If the file existed and could be opened and read, 0 is returned, otherwise errno is returned. */ -@@ -905,18 +911,39 @@ rl_read_init_file (filename) +@@ -930,18 +936,39 @@ rl_read_init_file (const char *filename) { /* Default the filename. */ if (filename == 0) @@ -80,7 +80,7 @@ #if defined (__MSDOS__) if (_rl_read_init_file (filename, 0) == 0) return 0; -@@ -1467,7 +1494,14 @@ remove_trailing: +@@ -1681,7 +1708,14 @@ remove_trailing: rl_macro_bind (seq, &funname[1], _rl_keymap); } else @@ -96,7 +96,7 @@ xfree (seq); return 0; -@@ -1632,7 +1666,6 @@ typedef int _rl_sv_func_t PARAMS((const +@@ -1850,7 +1884,6 @@ typedef int _rl_sv_func_t PARAMS((const #define V_INT 2 /* Forward declarations */ @@ -105,7 +105,7 @@ static int sv_dispprefix PARAMS((const char *)); static int sv_compquery PARAMS((const char *)); --- lib/readline/doc/rluser.texi -+++ lib/readline/doc/rluser.texi 2017-04-26 12:57:24.590906421 +0000 ++++ lib/readline/doc/rluser.texi 2018-11-29 08:33:08.921317296 +0000 @@ -349,7 +349,8 @@ file is taken from the value of the envi @end ifclear that variable is unset, the default is @file{~/.inputrc}. If that @@ -117,7 +117,7 @@ When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. --- lib/readline/rlconf.h -+++ lib/readline/rlconf.h 2017-04-26 12:57:24.586906499 +0000 ++++ lib/readline/rlconf.h 2018-11-29 08:33:08.921317296 +0000 @@ -37,7 +37,7 @@ #define HANDLE_SIGNALS ++++++ readline-6.2-metamode.patch ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.491606348 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.491606348 +0100 @@ -3,8 +3,8 @@ 1 file changed, 1 insertion(+) --- lib/readline/bind.c -+++ lib/readline/bind.c 2011-03-04 15:00:17.332426313 +0000 -@@ -1613,6 +1613,7 @@ static const struct { ++++ lib/readline/bind.c 2018-09-20 06:40:06.799183658 +0000 +@@ -1827,6 +1827,7 @@ static const struct { #if defined (VISIBLE_STATS) { "visible-stats", &rl_visible_stats, 0 }, #endif /* VISIBLE_STATS */ ++++++ readline-6.2-xmalloc.dif ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.499606338 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.499606338 +0100 @@ -5,8 +5,8 @@ 3 files changed, 16 insertions(+) --- xfree.c -+++ xfree.c 2012-10-17 12:48:37.862344784 +0000 -@@ -48,3 +48,6 @@ xfree (string) ++++ xfree.c 2018-09-20 06:41:57.485165699 +0000 +@@ -47,3 +47,6 @@ xfree (PTR_T string) if (string) free (string); } @@ -14,8 +14,8 @@ +#undef xfree +extern void xfree PARAMS((void *)) __attribute__ ((weak, alias ("_rl_xfree"))); --- xmalloc.c -+++ xmalloc.c 2012-10-17 12:48:28.430844890 +0000 -@@ -77,3 +77,8 @@ xrealloc (pointer, bytes) ++++ xmalloc.c 2018-09-20 06:41:57.485165699 +0000 +@@ -73,3 +73,8 @@ xrealloc (PTR_T pointer, size_t bytes) memory_error_and_abort ("xrealloc"); return (temp); } @@ -25,7 +25,7 @@ +extern PTR_T xmalloc PARAMS((size_t)) __attribute__ ((weak, alias ("_rl_xmalloc"))); +extern PTR_T xrealloc PARAMS((void *, size_t)) __attribute__ ((weak, alias ("_rl_xrealloc"))); --- xmalloc.h -+++ xmalloc.h 2012-10-17 12:27:20.325156790 +0000 ++++ xmalloc.h 2018-09-20 06:41:57.485165699 +0000 @@ -38,6 +38,14 @@ #endif /* !PTR_T */ ++++++ readline-6.3-destdir.patch ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.507606329 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.507606329 +0100 @@ -4,7 +4,7 @@ 2 files changed, 32 insertions(+), 24 deletions(-) --- shlib/Makefile.in -+++ shlib/Makefile.in 2014-04-17 10:51:05.898235056 +0000 ++++ shlib/Makefile.in 2018-09-20 06:43:10.055842585 +0000 @@ -59,6 +59,7 @@ bindir = @bindir@ libdir = @libdir@ datadir = @datadir@ @@ -36,7 +36,7 @@ uninstall-unsupported: --- support/shlib-install -+++ support/shlib-install 2014-04-17 10:54:11.938235782 +0000 ++++ support/shlib-install 2018-09-20 06:44:54.757933583 +0000 @@ -3,7 +3,7 @@ # shlib-install - install a shared library and do any necessary host-specific # post-installation configuration (like ldconfig) @@ -108,8 +108,8 @@ case "$host_os" in hpux*|darwin*|macosx*|linux*|solaris2*) if [ -z "$uninstall" ]; then -- chmod 555 ${INSTALLDIR}/${LIBNAME} -+ chmod 555 ${DESTDIR}${INSTALLDIR}/${LIBNAME} +- chmod 755 ${INSTALLDIR}/${LIBNAME} ++ chmod 755 ${DESTDIR}${INSTALLDIR}/${LIBNAME} fi ;; cygwin*|mingw*) IMPLIBNAME=`echo ${LIBNAME} \ ++++++ readline-6.3-input.dif ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.511606324 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.515606320 +0100 @@ -4,17 +4,17 @@ 2 files changed, 13 insertions(+), 1 deletion(-) --- lib/readline/input.c -+++ lib/readline/input.c 2003-03-17 19:03:51.000000000 +0000 -@@ -489,6 +489,8 @@ rl_read_key () ++++ lib/readline/input.c 2018-11-29 08:29:58.432878428 +0000 +@@ -501,6 +501,8 @@ rl_read_key (void) return (c); } +extern int _rl_read_zero_char_from_tty; + int - rl_getc (stream) - FILE *stream; -@@ -526,7 +528,10 @@ rl_getc (stream) + rl_getc (FILE *stream) + { +@@ -542,7 +544,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) @@ -27,8 +27,8 @@ #if defined (__BEOS__) if (errno == EINTR) --- lib/readline/readline.c -+++ lib/readline/readline.c 2014-04-17 10:24:16.302236347 +0000 -@@ -522,6 +522,9 @@ _rl_internal_char_cleanup () ++++ lib/readline/readline.c 2018-11-29 08:29:58.432878428 +0000 +@@ -525,6 +525,9 @@ _rl_internal_char_cleanup (void) _rl_erase_entire_line (); } @@ -37,8 +37,8 @@ + STATIC_CALLBACK int #if defined (READLINE_CALLBACKS) - readline_internal_char () -@@ -570,6 +573,10 @@ readline_internal_charloop () + readline_internal_char (void) +@@ -573,6 +576,10 @@ readline_internal_charloop (void) c = rl_read_key (); RL_UNSETSTATE(RL_STATE_READCMD); ++++++ readline-6.3-rltrace.patch ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.523606309 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.523606309 +0100 @@ -2,12 +2,12 @@ temporary files from public location without O_EXCL (bcn#868822). --- - lib/readline/util.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) + lib/readline/util.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) --- lib/readline/util.c -+++ lib/readline/util.c 2014-04-17 10:29:43.157274616 +0000 -@@ -504,10 +504,12 @@ _rl_trace (va_alist) ++++ lib/readline/util.c 2018-09-20 06:47:51.238715688 +0000 +@@ -487,10 +487,12 @@ _rl_trace (va_alist) if (_rl_tracefp == 0) _rl_tropen (); @@ -21,20 +21,19 @@ va_end (args); } -@@ -527,7 +529,7 @@ _rl_tropen () +@@ -510,7 +512,7 @@ _rl_tropen (void) #endif - sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid()); + snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid()); unlink(fnbuf); - _rl_tracefp = fopen (fnbuf, "w+"); + _rl_tracefp = fopen (fnbuf, "w+xe"); return _rl_tracefp != 0; } -@@ -535,8 +537,8 @@ int - _rl_trclose () +@@ -519,7 +521,8 @@ _rl_trclose (void) { int r; -- + - r = fclose (_rl_tracefp); + if (_rl_tracefp) + r = fclose (_rl_tracefp); ++++++ readline-7.0-screen.patch ++++++ --- /var/tmp/diff_new_pack.dcSeEQ/_old 2019-01-29 14:37:39.531606300 +0100 +++ /var/tmp/diff_new_pack.dcSeEQ/_new 2019-01-29 14:37:39.531606300 +0100 @@ -6,7 +6,7 @@ --- lib/readline/bind.c +++ readline-7.0/bind.c 2018-09-28 11:22:31.001503017 +0000 -@@ -1127,6 +1127,15 @@ parser_if (args) +@@ -1209,6 +1209,15 @@ parser_if (args) `$if term=sun-cmd' into their .inputrc. */ _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) && _rl_stricmp (args + 5, rl_terminal_name); ++++++ readline-7.0-patches.tar.bz2 -> readline-8.0-patches.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/readline-7.0-patches/readline70-001 new/readline-8.0-patches/readline70-001 --- old/readline-7.0-patches/readline70-001 2017-01-30 17:05:07.199013994 +0100 +++ new/readline-8.0-patches/readline70-001 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 7.0 -Patch-ID: readline70-001 - -Bug-Reported-by: Sean Zha <[email protected]> -Bug-Reference-ID: <bn3pr01mb13657d9303eb94bf6e54216e8c...@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'): - -*** 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; - -*** 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/readline-7.0-patches/readline70-002 new/readline-8.0-patches/readline70-002 --- old/readline-7.0-patches/readline70-002 2017-01-29 19:51:35.000000000 +0100 +++ new/readline-8.0-patches/readline70-002 1970-01-01 01:00:00.000000000 +0100 @@ -1,103 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 7.0 -Patch-ID: readline70-002 - -Bug-Reported-by: Hong Cho <[email protected]> -Bug-Reference-ID: <[email protected]> -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/readline-7.0-patches/readline70-003 new/readline-8.0-patches/readline70-003 --- old/readline-7.0-patches/readline70-003 2017-01-29 19:52:18.000000000 +0100 +++ new/readline-8.0-patches/readline70-003 1970-01-01 01:00:00.000000000 +0100 @@ -1,40 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 7.0 -Patch-ID: readline70-003 - -Bug-Reported-by: Frédéric Brière <[email protected]> -Bug-Reference-ID: <[email protected]> -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 ++++++ readline-6.2-endpw.dif -> readline-8.0.dif ++++++ --- /work/SRC/openSUSE:Factory/readline/readline-6.2-endpw.dif 2018-03-22 11:52:46.560227315 +0100 +++ /work/SRC/openSUSE:Factory/.readline.new.28833/readline-8.0.dif 2019-01-29 14:37:38.791607194 +0100 @@ -1,24 +1,161 @@ --- - lib/readline/complete.c | 4 ++++ - 1 file changed, 4 insertions(+) + Makefile.in | 4 +--- + complete.c | 6 +++--- + doc/Makefile.in | 2 +- + doc/readline.3 | 11 +++++++++++ + history.h | 1 + + readline.c | 7 +++++-- + readline.h | 3 ++- + support/shobj-conf | 5 +++-- + 8 files changed, 27 insertions(+), 12 deletions(-) ---- lib/readline/complete.c -+++ lib/readline/complete.c 2011-11-21 12:51:35.695646715 +0000 -@@ -89,6 +89,7 @@ typedef int QSFUNC (); - defined. */ - #if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) - extern struct passwd *getpwent PARAMS((void)); -+extern void endpwent (); - #endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ - - /* If non-zero, then this is the address of a function to call when -@@ -2316,6 +2317,9 @@ rl_username_completion_function (text, s - if (first_char == '~') - rl_filename_completion_desired = 1; - -+#if defined (HAVE_GETPWENT) -+ /* endpwent (); */ -+#endif - return (value); +--- Makefile.in ++++ Makefile.in 2018-09-20 06:52:00.770160356 +0000 +@@ -251,10 +251,8 @@ uninstall-pc: + maybe-uninstall-pc: uninstall-pc + + install-static: installdirs $(STATIC_LIBS) install-headers install-doc ${install_examples} install-pc +- -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old + $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a + -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a +- -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old + $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a + -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a + +@@ -285,7 +283,7 @@ install-doc: installdirs + $(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) + -( if test -d doc ; then \ + cd doc && \ +- ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \ ++ ${MAKE} infodir=$(infodir) DESTDIR=${DESTDIR} install; \ + fi ) + + uninstall-doc: +--- complete.c ++++ complete.c 2018-09-20 06:51:00.535262270 +0000 +@@ -1133,7 +1133,7 @@ _rl_find_completion_word (int *fp, int * + /* We didn't find an unclosed quoted substring upon which to do + completion, so use the word break characters to find the + substring on which to complete. */ +- while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)) ++ while ((rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY))) + { + scan = rl_line_buffer[rl_point]; + +@@ -2182,7 +2182,7 @@ rl_completion_matches (const char *text, + match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *)); + match_list[1] = (char *)NULL; + +- while (string = (*entry_function) (text, matches)) ++ while ((string = (*entry_function) (text, matches))) + { + if (RL_SIG_RECEIVED ()) + { +@@ -2254,7 +2254,7 @@ rl_username_completion_function (const c } - #endif /* !__WIN32__ && !__OPENNT */ + + #if defined (HAVE_GETPWENT) +- while (entry = getpwent ()) ++ while ((entry = getpwent ())) + { + /* Null usernames should result in all users as possible completions. */ + if (namelen == 0 || (STREQN (username, entry->pw_name, namelen))) +--- doc/Makefile.in ++++ doc/Makefile.in 2018-09-20 06:51:00.535262270 +0000 +@@ -107,7 +107,7 @@ DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ + # $(RM) $@ + # -${TEXI2PDF} $< + +-all: info dvi html ps text pdf ++all: info html + nodvi: info html text + + xdist: $(DIST_DOCS) +--- doc/readline.3 ++++ doc/readline.3 2018-09-20 06:51:00.535262270 +0000 +@@ -119,6 +119,14 @@ environment variable. If that variable + .IR ~/.inputrc . + If that file does not exist or cannot be read, the ultimate default is + .IR /etc/inputrc . ++If both files ++.I ~/.inputrc ++and ++.I /etc/inputrc ++exist readline will read first ++.I /etc/inputrc ++and then ++.IR ~/.inputrc . + When a program which uses the readline library starts up, the + init file is read, and the key bindings and variables are set. + There are only a few basic constructs allowed in the +@@ -1505,6 +1513,9 @@ VI Command Mode functions + .TP + .FN ~/.inputrc + Individual \fBreadline\fP initialization file ++.TP ++.FN /etc/inputrc ++System \fBreadline\fP initialization file + .PD + .SH AUTHORS + Brian Fox, Free Software Foundation +--- history.h ++++ history.h 2018-09-20 06:51:00.535262270 +0000 +@@ -32,6 +32,7 @@ extern "C" { + # include "rlstdc.h" + # include "rltypedefs.h" + #else ++# include <stdio.h> + # include <readline/rlstdc.h> + # include <readline/rltypedefs.h> + #endif +--- readline.c ++++ readline.c 2018-09-20 06:51:00.535262270 +0000 +@@ -844,8 +844,11 @@ _rl_dispatch_subseq (register int key, K + { + /* Special case rl_do_lowercase_version (). */ + if (func == rl_do_lowercase_version) +- /* Should we do anything special if key == ANYOTHERKEY? */ +- return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); ++ { ++ if (key == ANYOTHERKEY) ++ return -1; ++ return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); ++ } + + rl_executing_keymap = map; + rl_executing_key = key; +--- readline.h ++++ readline.h 2018-09-20 06:51:00.535262270 +0000 +@@ -32,6 +32,7 @@ extern "C" { + # include "keymaps.h" + # include "tilde.h" + #else ++# include <stdio.h> + # include <readline/rlstdc.h> + # include <readline/rltypedefs.h> + # include <readline/keymaps.h> +@@ -477,7 +478,7 @@ extern char *rl_filename_completion_func + + extern int rl_completion_mode PARAMS((rl_command_func_t *)); + +-#if 0 ++#ifdef OLD_READLINE + /* Backwards compatibility (compat.c). These will go away sometime. */ + extern void free_undo_list PARAMS((void)); + extern int maybe_save_line PARAMS((void)); +--- support/shobj-conf ++++ support/shobj-conf 2018-09-20 06:51:00.535262270 +0000 +@@ -126,10 +126,11 @@ sunos5*|solaris2*) + linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' ++ SHOBJ_LDFLAGS='-shared' + +- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' ++ SHLIB_XLDFLAGS='-Wl,-rpath-link,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ++ echo 'int main () { return 0; }' | gcc -ltinfo -o /dev/null -xc - > /dev/null 2>&1 && SHLIB_LIBS=-ltinfo || SHLIB_LIBS=-lncurses + ;; + + freebsd2*) ++++++ readline-7.0.tar.gz -> readline-8.0.tar.gz ++++++ ++++ 41111 lines of diff (skipped)
