From 91692f161e3e827ef82b7381b4cea1654cca7fd3 Mon Sep 17 00:00:00 2001 From: Siteshwar Vashisht Date: Wed, 13 Feb 2019 17:57:17 +0100 Subject: [PATCH] Rebase to bash-5.0 - Remove 'bash-2.02-security.patch' patch as it does not seem to be needed. - Remove 'bash-2.05b-xcc.patch' as this change is already in upstream. - Remove 'bash-4.1-defer-sigchld-trap.patch' as this patch was doing nothing and this bug that it tried to solve should be fixed in upstream https://lists.gnu.org/archive/html/bug-bash/2012-03/msg00045.html - Remove 'bash-4.4-coverity.patch' as it has been upstreamed. - Delete several other patches that were not removed while rebasing to bash-4.4. Resolves: #1675080 --- .gitignore | 1 + bash-2.02-security.patch | 11 - bash-2.05a-interpreter.patch | 38 ++-- bash-2.05b-manso.patch | 10 - bash-2.05b-xcc.patch | 19 -- bash-4.1-defer-sigchld-trap.patch | 11 - bash-4.2-coverity.patch | 30 +-- bash-4.2-trap.patch | 60 ------ bash-4.3-here-doc-ps2-comsub.patch | 47 ----- bash-4.3-lastpipe-nested-pipe-segfault.patch | 24 --- bash-4.3-noecho.patch | 20 +- bash-4.3-parse-time-keyword.patch | 28 --- bash-4.3-readline-revert-lines.patch | 18 -- bash-4.4-assignment-error.patch | 31 --- bash-4.4-case-in-command-subst.patch | 18 -- bash-4.4-coverity.patch | 203 ------------------- bash-4.4-patch-1.patch | 49 ----- bash-4.4-patch-10.patch | 39 ---- bash-4.4-patch-11.patch | 39 ---- bash-4.4-patch-12.patch | 119 ----------- bash-4.4-patch-13.patch | 38 ---- bash-4.4-patch-14.patch | 85 -------- bash-4.4-patch-15.patch | 38 ---- bash-4.4-patch-16.patch | 68 ------- bash-4.4-patch-17.patch | 41 ---- bash-4.4-patch-18.patch | 38 ---- bash-4.4-patch-19.patch | 40 ---- bash-4.4-patch-2.patch | 59 ------ bash-4.4-patch-20.patch | 136 ------------- bash-4.4-patch-21.patch | 48 ----- bash-4.4-patch-22.patch | 47 ----- bash-4.4-patch-23.patch | 47 ----- bash-4.4-patch-3.patch | 52 ----- bash-4.4-patch-4.patch | 81 -------- bash-4.4-patch-5.patch | 42 ---- bash-4.4-patch-6.patch | 50 ----- bash-4.4-patch-7.patch | 114 ----------- bash-4.4-patch-8.patch | 71 ------- bash-4.4-patch-9.patch | 80 -------- bash-4.4-unset-nonblock-stdin.patch | 11 - bash-4.5-test-modification-time.patch | 11 - bash-5.0-patch-1.patch | 150 ++++++++++++++ bash-5.0-patch-2.patch | 96 +++++++++ bash-requires.patch | 140 +++++++------ bash-tty-tests.patch | 10 +- bash.spec | 98 ++++----- sources | 2 +- 47 files changed, 409 insertions(+), 2099 deletions(-) delete mode 100644 bash-2.02-security.patch delete mode 100644 bash-2.05b-manso.patch delete mode 100644 bash-2.05b-xcc.patch delete mode 100644 bash-4.1-defer-sigchld-trap.patch delete mode 100644 bash-4.2-trap.patch delete mode 100644 bash-4.3-here-doc-ps2-comsub.patch delete mode 100644 bash-4.3-lastpipe-nested-pipe-segfault.patch delete mode 100644 bash-4.3-parse-time-keyword.patch delete mode 100644 bash-4.3-readline-revert-lines.patch delete mode 100644 bash-4.4-assignment-error.patch delete mode 100644 bash-4.4-case-in-command-subst.patch delete mode 100644 bash-4.4-coverity.patch delete mode 100644 bash-4.4-patch-1.patch delete mode 100644 bash-4.4-patch-10.patch delete mode 100644 bash-4.4-patch-11.patch delete mode 100644 bash-4.4-patch-12.patch delete mode 100644 bash-4.4-patch-13.patch delete mode 100644 bash-4.4-patch-14.patch delete mode 100644 bash-4.4-patch-15.patch delete mode 100644 bash-4.4-patch-16.patch delete mode 100644 bash-4.4-patch-17.patch delete mode 100644 bash-4.4-patch-18.patch delete mode 100644 bash-4.4-patch-19.patch delete mode 100644 bash-4.4-patch-2.patch delete mode 100644 bash-4.4-patch-20.patch delete mode 100644 bash-4.4-patch-21.patch delete mode 100644 bash-4.4-patch-22.patch delete mode 100644 bash-4.4-patch-23.patch delete mode 100644 bash-4.4-patch-3.patch delete mode 100644 bash-4.4-patch-4.patch delete mode 100644 bash-4.4-patch-5.patch delete mode 100644 bash-4.4-patch-6.patch delete mode 100644 bash-4.4-patch-7.patch delete mode 100644 bash-4.4-patch-8.patch delete mode 100644 bash-4.4-patch-9.patch delete mode 100644 bash-4.4-unset-nonblock-stdin.patch delete mode 100644 bash-4.5-test-modification-time.patch create mode 100644 bash-5.0-patch-1.patch create mode 100644 bash-5.0-patch-2.patch diff --git a/.gitignore b/.gitignore index 8222bbf..72362fe 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ bash-4.1.tar.gz /bash-4.2.tar.gz /bash-4.3.tar.gz /bash-4.4.tar.gz +/bash-5.0.tar.gz diff --git a/bash-2.02-security.patch b/bash-2.02-security.patch deleted file mode 100644 index f8a913b..0000000 --- a/bash-2.02-security.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- bash-2.02-orig/parse.y Wed Mar 25 18:16:23 1998 -+++ bash-2.02/parse.y Sun Apr 19 16:46:34 1998 -@@ -923,7 +923,7 @@ - - #if defined (READLINE) - char *current_readline_prompt = (char *)NULL; --char *current_readline_line = (char *)NULL; -+unsigned char *current_readline_line = (unsigned char *)NULL; - int current_readline_line_index = 0; - - static int diff --git a/bash-2.05a-interpreter.patch b/bash-2.05a-interpreter.patch index ca497c4..110e44d 100644 --- a/bash-2.05a-interpreter.patch +++ b/bash-2.05a-interpreter.patch @@ -1,8 +1,8 @@ diff --git a/config.h.in b/config.h.in -index a5ad9e7..62a6b32 100644 +index 0adc903..366e639 100644 --- a/config.h.in +++ b/config.h.in -@@ -748,6 +748,9 @@ +@@ -758,6 +758,9 @@ /* Define if you have the pselect function. */ #undef HAVE_PSELECT @@ -12,7 +12,7 @@ index a5ad9e7..62a6b32 100644 /* Define if you have the putenv function. */ #undef HAVE_PUTENV -@@ -946,6 +949,9 @@ +@@ -956,6 +959,9 @@ /* Define if you have the header file. */ #undef HAVE_DLFCN_H @@ -23,29 +23,20 @@ index a5ad9e7..62a6b32 100644 #undef HAVE_GRP_H diff --git a/configure.ac b/configure.ac -index ce4e9b6..eda95d6 100644 +index 2c74f13..4e9c3a4 100644 --- a/configure.ac +++ b/configure.ac -@@ -700,7 +700,7 @@ BASH_HEADER_INTTYPES - AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ - memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ -- regex.h syslog.h ulimit.h) -+ regex.h syslog.h ulimit.h elf.h) - AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/param.h sys/socket.h sys/stat.h \ - sys/time.h sys/times.h sys/types.h sys/wait.h) -@@ -771,7 +771,7 @@ dnl checks for system calls +@@ -782,7 +782,7 @@ dnl checks for system calls AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink select setdtablesize \ - setitimer tcgetpgrp uname ulimit waitpid) + setitimer tcgetpgrp uname ulimit waitpid pread) AC_REPLACE_FUNCS(rename) dnl checks for c library functions diff --git a/execute_cmd.c b/execute_cmd.c -index 2a3df6d..b5cd405 100644 +index 4eae19c..0af6f8f 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -41,6 +41,10 @@ @@ -59,7 +50,7 @@ index 2a3df6d..b5cd405 100644 #include "posixtime.h" #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) -@@ -5486,6 +5490,14 @@ shell_execve (command, args, env) +@@ -5706,6 +5710,14 @@ shell_execve (command, args, env) { /* The file has the execute bits set, but the kernel refuses to run it for some reason. See why. */ @@ -74,18 +65,19 @@ index 2a3df6d..b5cd405 100644 #if defined (HAVE_HASH_BANG_EXEC) READ_SAMPLE_BUF (command, sample, sample_len); if (sample_len > 0) -@@ -5495,6 +5507,7 @@ shell_execve (command, args, env) +@@ -5715,6 +5727,7 @@ shell_execve (command, args, env) char *interp; int ilen; -+ close (fd); ++ close (fd); interp = getinterp (sample, sample_len, (int *)NULL); ilen = strlen (interp); errno = i; -@@ -5510,6 +5523,136 @@ shell_execve (command, args, env) +@@ -5730,7 +5743,138 @@ shell_execve (command, args, env) return (EX_NOEXEC); } #endif +- errno = i; +#if defined (HAVE_ELF_H) + if (i == ENOENT + && sample_len > EI_NIDENT @@ -216,9 +208,11 @@ index 2a3df6d..b5cd405 100644 +#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) + close (fd); +#endif - errno = i; ++ ++ errno = i; file_error (command); } + return (last_command_exit_value); -- -2.9.3 +2.17.2 diff --git a/bash-2.05b-manso.patch b/bash-2.05b-manso.patch deleted file mode 100644 index 39ebf74..0000000 --- a/bash-2.05b-manso.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- bash-2.05b/doc/builtins.1.manso 2003-02-10 18:58:21.000000000 +0000 -+++ bash-2.05b/doc/builtins.1 2003-02-10 18:58:28.000000000 +0000 -@@ -10,6 +10,6 @@ - ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) - .SH BASH BUILTIN COMMANDS - .nr zZ 1 --.so bash.1 -+.so man1/bash.1 - .SH SEE ALSO - bash(1), sh(1) diff --git a/bash-2.05b-xcc.patch b/bash-2.05b-xcc.patch deleted file mode 100644 index ad42832..0000000 --- a/bash-2.05b-xcc.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- bash-3.1/Makefile.in.xcc 2005-10-25 19:37:52.000000000 +0100 -+++ bash-3.1/Makefile.in 2005-12-23 16:11:09.000000000 +0000 -@@ -68,6 +68,7 @@ - ARFLAGS = @ARFLAGS@ - RANLIB = @RANLIB@ - SIZE = @SIZE@ -+STRIP = strip - - INSTALL = @INSTALL@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ -@@ -535,7 +536,7 @@ - @chmod a+rx bashbug - - strip: $(Program) .made -- strip $(Program) -+ $(STRIP) $(Program) - ls -l $(Program) - -$(SIZE) $(Program) - diff --git a/bash-4.1-defer-sigchld-trap.patch b/bash-4.1-defer-sigchld-trap.patch deleted file mode 100644 index e00adec..0000000 --- a/bash-4.1-defer-sigchld-trap.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -pruN bash-4.1/jobs.c bash-4.1.patched/jobs.c ---- bash-4.1/jobs.c 2009-11-30 03:42:05.000000000 +0530 -+++ bash-4.1.patched/jobs.c 2012-03-06 16:44:15.706595703 +0530 -@@ -3037,6 +3037,7 @@ waitchld (wpid, block) - pid_t pid; - - int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; -+ int called_from_sighand = sigchld; - static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ - - call_set_current = children_exited = 0; diff --git a/bash-4.2-coverity.patch b/bash-4.2-coverity.patch index 5fc8456..dc52e52 100644 --- a/bash-4.2-coverity.patch +++ b/bash-4.2-coverity.patch @@ -1,7 +1,8 @@ -diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c ---- bash-4.2/execute_cmd.c.coverity 2011-02-24 13:04:35.000000000 +0100 -+++ bash-4.2/execute_cmd.c 2011-02-24 13:49:13.000000000 +0100 -@@ -5036,7 +5036,7 @@ shell_execve (command, args, env) +diff --git a/execute_cmd.c b/execute_cmd.c +index a988400..412128c 100644 +--- a/execute_cmd.c ++++ b/execute_cmd.c +@@ -5760,7 +5760,7 @@ shell_execve (command, args, env) Elf32_Ehdr ehdr; Elf32_Phdr *phdr; Elf32_Shdr *shdr; @@ -10,7 +11,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c /* We have to copy the data since the sample buffer might not be aligned correctly to be accessed as -@@ -5044,12 +5044,12 @@ shell_execve (command, args, env) +@@ -5768,12 +5768,12 @@ shell_execve (command, args, env) memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); nshdr = ehdr.e_shnum; @@ -25,7 +26,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c ehdr.e_shoff); #else if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) -@@ -5091,11 +5091,11 @@ shell_execve (command, args, env) +@@ -5815,11 +5815,11 @@ shell_execve (command, args, env) } nphdr = ehdr.e_phnum; @@ -39,7 +40,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c ehdr.e_phoff); #else if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) -@@ -5120,7 +5120,7 @@ shell_execve (command, args, env) +@@ -5844,7 +5844,7 @@ shell_execve (command, args, env) Elf64_Ehdr ehdr; Elf64_Phdr *phdr; Elf64_Shdr *shdr; @@ -48,7 +49,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c /* We have to copy the data since the sample buffer might not be aligned correctly to be accessed as -@@ -5128,11 +5128,11 @@ shell_execve (command, args, env) +@@ -5852,11 +5852,11 @@ shell_execve (command, args, env) memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); nshdr = ehdr.e_shnum; @@ -62,7 +63,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c ehdr.e_shoff); #else if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) -@@ -5174,11 +5174,11 @@ shell_execve (command, args, env) +@@ -5898,11 +5898,11 @@ shell_execve (command, args, env) } nphdr = ehdr.e_phnum; @@ -76,7 +77,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c ehdr.e_phoff); #else if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) -@@ -5200,8 +5200,8 @@ shell_execve (command, args, env) +@@ -5924,8 +5924,8 @@ shell_execve (command, args, env) if (offset != -1) { @@ -87,7 +88,7 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c char *interp = NULL; do -@@ -5250,7 +5250,8 @@ shell_execve (command, args, env) +@@ -5974,7 +5974,8 @@ shell_execve (command, args, env) } #endif #if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) @@ -95,5 +96,8 @@ diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c + if (fd >= 0) + close (fd); #endif - errno = i; - file_error (command); + + errno = i; +-- +2.17.2 + diff --git a/bash-4.2-trap.patch b/bash-4.2-trap.patch deleted file mode 100644 index 92c785d..0000000 --- a/bash-4.2-trap.patch +++ /dev/null @@ -1,60 +0,0 @@ -commit 41d203e21f94c1b8bfc457606ee633c22da3cf04 -Author: Chet Ramey -Date: Wed Jun 12 09:29:51 2013 -0400 - - commit bash-20130523 snapshot - -diff --git a/trap.c b/trap.c -index 1e11d1f..da59b26 100644 ---- a/trap.c -+++ b/trap.c -@@ -286,6 +286,9 @@ run_pending_traps () - if (catch_flag == 0) /* simple optimization */ - return; - -+ if (running_trap > 0) -+ return; /* no recursive trap invocations */ -+ - catch_flag = trapped_signal_received = 0; - - /* Preserve $? when running trap. */ -@@ -304,6 +307,8 @@ run_pending_traps () - - BLOCK_SIGNAL (sig, set, oset); - -+ running_trap = sig + 1; -+ - if (sig == SIGINT) - { - run_interrupt_trap (); -@@ -324,6 +329,7 @@ run_pending_traps () - { - /* This can happen when run_pending_traps is called while - running a SIGCHLD trap handler. */ -+ running_trap = 0; - UNBLOCK_SIGNAL (oset); - continue; /* XXX */ - } -@@ -359,7 +365,14 @@ run_pending_traps () - save_subst_varlist = subst_assign_varlist; - subst_assign_varlist = 0; - -+#if defined (JOB_CONTROL) -+ save_pipeline (1); /* XXX only provides one save level */ -+#endif - evalstring (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE); -+#if defined (JOB_CONTROL) -+ restore_pipeline (1); -+#endif -+ - restore_token_state (token_state); - free (token_state); - -@@ -367,6 +380,7 @@ run_pending_traps () - } - - pending_traps[sig] = 0; -+ running_trap = 0; - - UNBLOCK_SIGNAL (oset); - } diff --git a/bash-4.3-here-doc-ps2-comsub.patch b/bash-4.3-here-doc-ps2-comsub.patch deleted file mode 100644 index 0ccfd20..0000000 --- a/bash-4.3-here-doc-ps2-comsub.patch +++ /dev/null @@ -1,47 +0,0 @@ -*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 ---- shell.h 2014-06-03 09:24:28.000000000 -0400 -*************** -*** 169,173 **** - int expand_aliases; - int echo_input_at_read; -! - } sh_parser_state_t; - ---- 169,174 ---- - int expand_aliases; - int echo_input_at_read; -! int need_here_doc; -! - } sh_parser_state_t; - -*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 ---- parse.y 2014-04-30 09:27:59.000000000 -0400 -*************** -*** 2643,2647 **** - - r = 0; -! while (need_here_doc) - { - parser_state |= PST_HEREDOC; ---- 2643,2647 ---- - - r = 0; -! while (need_here_doc > 0) - { - parser_state |= PST_HEREDOC; -*************** -*** 6076,6079 **** ---- 6076,6080 ---- - ps->expand_aliases = expand_aliases; - ps->echo_input_at_read = echo_input_at_read; -+ ps->need_here_doc = need_here_doc; - - ps->token = token; -*************** -*** 6124,6127 **** ---- 6125,6129 ---- - expand_aliases = ps->expand_aliases; - echo_input_at_read = ps->echo_input_at_read; -+ need_here_doc = ps->need_here_doc; - - FREE (token); diff --git a/bash-4.3-lastpipe-nested-pipe-segfault.patch b/bash-4.3-lastpipe-nested-pipe-segfault.patch deleted file mode 100644 index 200a84f..0000000 --- a/bash-4.3-lastpipe-nested-pipe-segfault.patch +++ /dev/null @@ -1,24 +0,0 @@ -*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 ---- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 -*************** -*** 2410,2414 **** - lstdin = wait_for (lastpid); - #if defined (JOB_CONTROL) -! exec_result = job_exit_status (lastpipe_jid); - #endif - unfreeze_jobs_list (); ---- 2425,2438 ---- - lstdin = wait_for (lastpid); - #if defined (JOB_CONTROL) -! /* If wait_for removes the job from the jobs table, use result of last -! command as pipeline's exit status as usual. The jobs list can get -! frozen and unfrozen at inconvenient times if there are multiple pipelines -! running simultaneously. */ -! if (INVALID_JOB (lastpipe_jid) == 0) -! exec_result = job_exit_status (lastpipe_jid); -! else if (pipefail_opt) -! exec_result = exec_result | lstdin; /* XXX */ -! /* otherwise we use exec_result */ -! - #endif - unfreeze_jobs_list (); diff --git a/bash-4.3-noecho.patch b/bash-4.3-noecho.patch index 2906fbf..8adf36d 100644 --- a/bash-4.3-noecho.patch +++ b/bash-4.3-noecho.patch @@ -1,21 +1,21 @@ diff --git a/parse.y b/parse.y -index 30425a5..85f1c4f 100644 +index 07e6e3e..4cd373f 100644 --- a/parse.y +++ b/parse.y -@@ -4228,6 +4228,8 @@ xparse_dolparen (base, string, indp, flags) +@@ -4410,6 +4410,8 @@ xparse_dolparen (base, string, indp, flags) save_parser_state (&ps); save_input_line_state (&ls); orig_eof_token = shell_eof_token; + /* avoid echoing every substitution again */ + echo_input_at_read = 0; - - /*(*/ - parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ + #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + saved_pushed_strings = pushed_string_list; /* separate parsing context */ + pushed_string_list = (STRING_SAVER *)NULL; diff --git a/subst.c b/subst.c -index f1a4df1..a93a4ce 100644 +index 9559187..0c2caa6 100644 --- a/subst.c +++ b/subst.c -@@ -8513,6 +8513,7 @@ param_expand (string, sindex, quoted, expanded_something, +@@ -9145,6 +9145,7 @@ param_expand (string, sindex, quoted, expanded_something, WORD_LIST *list; WORD_DESC *tdesc, *ret; int tflag; @@ -23,7 +23,7 @@ index f1a4df1..a93a4ce 100644 /*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/ zindex = *sindex; -@@ -8831,6 +8832,9 @@ arithsub: +@@ -9514,6 +9515,9 @@ arithsub: } comsub: @@ -33,7 +33,7 @@ index f1a4df1..a93a4ce 100644 if (pflags & PF_NOCOMSUB) /* we need zindex+1 because string[zindex] == RPAREN */ temp1 = substring (string, *sindex, zindex+1); -@@ -8843,6 +8847,7 @@ comsub: +@@ -9526,6 +9530,7 @@ comsub: } FREE (temp); temp = temp1; @@ -42,5 +42,5 @@ index f1a4df1..a93a4ce 100644 /* Do POSIX.2d9-style arithmetic substitution. This will probably go -- -2.9.3 +2.17.2 diff --git a/bash-4.3-parse-time-keyword.patch b/bash-4.3-parse-time-keyword.patch deleted file mode 100644 index 40337f5..0000000 --- a/bash-4.3-parse-time-keyword.patch +++ /dev/null @@ -1,28 +0,0 @@ -*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400 ---- parse.y 2014-06-11 10:25:53.000000000 -0400 -*************** -*** 2789,2797 **** - case OR_OR: - case '&': - case DO: - case THEN: - case ELSE: - case '{': /* } */ -! case '(': /* ) */ - case BANG: /* ! time pipeline */ - case TIME: /* time time pipeline */ ---- 2789,2802 ---- - case OR_OR: - case '&': -+ case WHILE: - case DO: -+ case UNTIL: -+ case IF: - case THEN: -+ case ELIF: - case ELSE: - case '{': /* } */ -! case '(': /* )( */ -! case ')': /* only valid in case statement */ - case BANG: /* ! time pipeline */ - case TIME: /* time time pipeline */ diff --git a/bash-4.3-readline-revert-lines.patch b/bash-4.3-readline-revert-lines.patch deleted file mode 100644 index 2ce3d87..0000000 --- a/bash-4.3-readline-revert-lines.patch +++ /dev/null @@ -1,18 +0,0 @@ -*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 ---- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 -*************** -*** 462,465 **** ---- 462,466 ---- - /* Set up rl_line_buffer and other variables from history entry */ - rl_replace_from_history (entry, 0); /* entry->line is now current */ -+ entry->data = 0; /* entry->data is now current undo list */ - /* Undo all changes to this history entry */ - while (rl_undo_list) -*************** -*** 469,473 **** - FREE (entry->line); - entry->line = savestring (rl_line_buffer); -- entry->data = 0; - } - entry = previous_history (); ---- 470,473 ---- diff --git a/bash-4.4-assignment-error.patch b/bash-4.4-assignment-error.patch deleted file mode 100644 index 9645503..0000000 --- a/bash-4.4-assignment-error.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/execute_cmd.h b/execute_cmd.h ---- a/execute_cmd.h -+++ b/execute_cmd.h -@@ -37,6 +37,9 @@ struct func_array_state - }; - #endif - -+/* Variables delared in execute_cmd.c, used by many other files */ -+extern int executing_command_builtin; -+ - extern struct fd_bitmap *new_fd_bitmap __P((int)); - extern void dispose_fd_bitmap __P((struct fd_bitmap *)); - extern void close_fd_bitmap __P((struct fd_bitmap *)); -diff --git a/subst.c b/subst.c ---- a/subst.c -+++ b/subst.c -@@ -10676,11 +10676,12 @@ expand_word_list_internal (list, eflags) - tint = do_word_assignment (temp_list->word, 0); - this_command_name = savecmd; - /* Variable assignment errors in non-interactive shells -- running in Posix.2 mode cause the shell to exit. */ -+ running in Posix.2 mode cause the shell to exit, unless -+ they are being run by the `command' builtin. */ - if (tint == 0) - { - last_command_exit_value = EXECUTION_FAILURE; -- if (interactive_shell == 0 && posixly_correct) -+ if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0) - exp_jump_to_top_level (FORCE_EOF); - else - exp_jump_to_top_level (DISCARD); diff --git a/bash-4.4-case-in-command-subst.patch b/bash-4.4-case-in-command-subst.patch deleted file mode 100644 index 12509ed..0000000 --- a/bash-4.4-case-in-command-subst.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/parse.y b/parse.y ---- a/parse.y -+++ b/parse.y -@@ -4011,11 +4011,13 @@ eof_error: - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - } -- else -+ else if (shellmeta (ch) == 0) - { - tflags &= ~LEX_RESWDOK; - /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ - } -+ else /* can't be in a reserved word any more */ -+ lex_rwlen = 0; - } - else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) - ; /* don't modify LEX_RESWDOK if we're starting a comment */ diff --git a/bash-4.4-coverity.patch b/bash-4.4-coverity.patch deleted file mode 100644 index c1fc747..0000000 --- a/bash-4.4-coverity.patch +++ /dev/null @@ -1,203 +0,0 @@ -diff --git a/builtins/fc.def b/builtins/fc.def -index fe16471..98c53db 100644 ---- a/builtins/fc.def -+++ b/builtins/fc.def -@@ -423,6 +423,7 @@ fc_builtin (list) - { - sh_wrerror (); - fclose (stream); -+ FREE (fn); - return (EXECUTION_FAILURE); - } - fclose (stream); -diff --git a/execute_cmd.c b/execute_cmd.c -index 63a332a..15b5e19 100644 ---- a/execute_cmd.c -+++ b/execute_cmd.c -@@ -2196,8 +2196,10 @@ coproc_setvars (cp) - if (v == 0) - { - v = find_variable_nameref_for_create (cp->c_name, 1); -- if (v == INVALID_NAMEREF_VALUE) -- return; -+ if (v == INVALID_NAMEREF_VALUE) { -+ free (namevar); -+ return; -+ } - if (v && nameref_p (v)) - { - free (cp->c_name); -@@ -2210,6 +2212,7 @@ coproc_setvars (cp) - { - if (readonly_p (v)) - err_readonly (cp->c_name); -+ free (namevar); - return; - } - if (v == 0) -@@ -5528,7 +5531,6 @@ shell_execve (command, args, env) - char *interp; - int ilen; - -- close (fd); - interp = getinterp (sample, sample_len, (int *)NULL); - ilen = strlen (interp); - errno = i; -diff --git a/expr.c b/expr.c -index 172964a..5dc57c0 100644 ---- a/expr.c -+++ b/expr.c -@@ -207,7 +207,8 @@ static intmax_t exp5 __P((void)); - static intmax_t exp4 __P((void)); - static intmax_t expshift __P((void)); - static intmax_t exp3 __P((void)); --static intmax_t exp2 __P((void)); -+/* Avoid name clash with standard exp2 */ -+static intmax_t bash_exp2 __P((void)); - static intmax_t exppower __P((void)); - static intmax_t exp1 __P((void)); - static intmax_t exp0 __P((void)); -@@ -809,14 +810,14 @@ exp3 () - { - register intmax_t val1, val2; - -- val1 = exp2 (); -+ val1 = bash_exp2 (); - - while ((curtok == PLUS) || (curtok == MINUS)) - { - int op = curtok; - - readtok (); -- val2 = exp2 (); -+ val2 = bash_exp2 (); - - if (op == PLUS) - val1 += val2; -@@ -828,7 +829,7 @@ exp3 () - } - - static intmax_t --exp2 () -+bash_exp2 () - { - register intmax_t val1, val2; - #if defined (HAVE_IMAXDIV) -diff --git a/lib/glob/glob.c b/lib/glob/glob.c -index 7f6eafe..c018e29 100644 ---- a/lib/glob/glob.c -+++ b/lib/glob/glob.c -@@ -576,7 +576,7 @@ glob_vector (pat, dir, flags) - register char *nextname, *npat, *subdir; - unsigned int count; - int lose, skip, ndirs, isdir, sdlen, add_current, patlen; -- register char **name_vector; -+ register char **name_vector = NULL; - register unsigned int i; - int mflags; /* Flags passed to strmatch (). */ - int pflags; /* flags passed to sh_makepath () */ -@@ -894,7 +894,7 @@ glob_vector (pat, dir, flags) - } - - /* Don't call QUIT; here; let higher layers deal with it. */ -- -+ FREE (name_vector); - return ((char **)NULL); - } - -diff --git a/lib/sh/pathcanon.c b/lib/sh/pathcanon.c -index f19bd55..2a565d6 100644 ---- a/lib/sh/pathcanon.c -+++ b/lib/sh/pathcanon.c -@@ -227,7 +227,7 @@ sh_canonpath (path, flags) - if (result[2] == '\0') /* short-circuit for bare `//' */ - result[1] = '\0'; - else -- strcpy (result, result + 1); -+ memmove(result, result + 1, strlen(result + 1) + 1); - } - - return (result); -diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c -index 26016b7..b64c4cd 100644 ---- a/lib/sh/pathphys.c -+++ b/lib/sh/pathphys.c -@@ -245,7 +245,7 @@ error: - if (result[2] == '\0') /* short-circuit for bare `//' */ - result[1] = '\0'; - else -- strcpy (result, result + 1); -+ memmove(result, result + 1, strlen(result + 1) + 1); - } - - return (result); -diff --git a/shell.c b/shell.c -index b43de50..4aae182 100644 ---- a/shell.c -+++ b/shell.c -@@ -1948,8 +1948,10 @@ show_shell_usage (fp, extra) - fputs (_("\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"), fp); - - for (i = 0, set_opts = 0; shell_builtins[i].name; i++) -- if (STREQ (shell_builtins[i].name, "set")) -+ if (STREQ (shell_builtins[i].name, "set")) { - set_opts = savestring (shell_builtins[i].short_doc); -+ break; -+ } - if (set_opts) - { - s = strchr (set_opts, '['); -diff --git a/subst.c b/subst.c -index 5f3e41e..7574617 100644 ---- a/subst.c -+++ b/subst.c -@@ -5182,8 +5182,11 @@ parameter_list_transform (xc, itype, quoted) - list = list_rest_of_args (); - if (list == 0) - return ((char *)NULL); -- if (xc == 'A') -- return (pos_params_assignment (list, itype, quoted)); -+ if (xc == 'A') { -+ ret = pos_params_assignment (list, itype, quoted); -+ dispose_words (list); -+ return (ret); -+ } - ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); - dispose_words (list); - return (ret); -@@ -6813,6 +6816,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla - { - report_error (_("%s: invalid indirect expansion"), name); - free (vname); -+ free (t1); - dispose_word (w); - return &expand_wdesc_error; - } -@@ -6820,6 +6824,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla - { - report_error (_("%s: invalid variable name"), vname); - free (vname); -+ free (t1); - dispose_word (w); - return &expand_wdesc_error; - } -diff --git a/support/man2html.c b/support/man2html.c -index 6ba5061..1d9e376 100644 ---- a/support/man2html.c -+++ b/support/man2html.c -@@ -522,6 +522,7 @@ read_man_page(char *filename) - man_buf[buf_size] = '\n'; - man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0'; - } else { -+ free (man_buf); - man_buf = NULL; - } - fclose(man_stream); -@@ -2562,7 +2563,6 @@ scan_request(char *c) - h = name; - if (stat(h, &stbuf) != -1) - l = stbuf.st_size; -- buf = stralloc(l + 4); - #if NOCGI - if (!out_length) { - char *t, *s; diff --git a/bash-4.4-patch-1.patch b/bash-4.4-patch-1.patch deleted file mode 100644 index e0a6088..0000000 --- a/bash-4.4-patch-1.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 8ddc8d6e3a3d85eec6d4ba9b9ed2bc36bce56716 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 14 Nov 2016 14:26:51 -0500 -Subject: [PATCH] Bash-4.4 patch 1 - ---- - lib/readline/history.c | 6 +++++- - patchlevel.h | 2 +- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/lib/readline/history.c b/lib/readline/history.c -index 3b8dbc5..9ff25a7 100644 ---- a/lib/readline/history.c -+++ b/lib/readline/history.c -@@ -57,6 +57,8 @@ extern int errno; - /* How big to make the_history when we first allocate it. */ - #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 - -@@ -307,7 +309,9 @@ add_history (string) - if (history_size == 0) - { - if (history_stifled && history_max_entries > 0) -- history_size = history_max_entries + 2; -+ history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE) -+ ? MAX_HISTORY_INITIAL_SIZE -+ : history_max_entries + 2; - else - history_size = DEFAULT_HISTORY_INITIAL_SIZE; - the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); -diff --git a/patchlevel.h b/patchlevel.h -index 1cd7c96..40db1a3 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 0 -+#define PATCHLEVEL 1 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-patch-10.patch b/bash-4.4-patch-10.patch deleted file mode 100644 index ec0fbfe..0000000 --- a/bash-4.4-patch-10.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 5b9762d6f0cd36ff1b88bde22efa30ad0ed27ec6 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 20 Jan 2017 15:38:38 -0500 -Subject: [PATCH] Bash-4.4 patch 10 - ---- - builtins/read.def | 3 ++- - patchlevel.h | 2 +- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/builtins/read.def b/builtins/read.def -index 48fda33..33821f3 100644 ---- a/builtins/read.def -+++ b/builtins/read.def -@@ -181,7 +181,8 @@ read_builtin (list) - WORD_LIST *list; - { - register char *varname; -- int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; -+ int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; -+ volatile int i; - int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; - int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno; - unsigned int tmsec, tmusec; -diff --git a/patchlevel.h b/patchlevel.h -index 02f1d60..8002af7 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 9 -+#define PATCHLEVEL 10 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-patch-11.patch b/bash-4.4-patch-11.patch deleted file mode 100644 index d3ec76a..0000000 --- a/bash-4.4-patch-11.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 76bb456d8fcd870cd31b7bf9d90798cd97cee2ab Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 20 Jan 2017 15:38:49 -0500 -Subject: [PATCH] Bash-4.4 patch 11 - ---- - patchlevel.h | 2 +- - sig.c | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 8002af7..772676c 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 10 -+#define PATCHLEVEL 11 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/sig.c b/sig.c -index ad01631..e5bb739 100644 ---- a/sig.c -+++ b/sig.c -@@ -585,7 +585,8 @@ termsig_handler (sig) - #if defined (JOB_CONTROL) - if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)))) - hangup_all_jobs (); -- end_job_control (); -+ if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0) -+ end_job_control (); - #endif /* JOB_CONTROL */ - - #if defined (PROCESS_SUBSTITUTION) --- -2.9.3 - diff --git a/bash-4.4-patch-12.patch b/bash-4.4-patch-12.patch deleted file mode 100644 index 2983a94..0000000 --- a/bash-4.4-patch-12.patch +++ /dev/null @@ -1,119 +0,0 @@ -From bc007799f0e1362100375bb95d952d28de4c62fb Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 27 Jan 2017 11:25:44 -0500 -Subject: [PATCH] Bash-4.4 patch 12 - ---- - patchlevel.h | 2 +- - subst.c | 32 ++++++++++++++++++++------------ - 2 files changed, 21 insertions(+), 13 deletions(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 772676c..93dbe0d 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 11 -+#define PATCHLEVEL 12 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index 027a13e..dbf0157 100644 ---- a/subst.c -+++ b/subst.c -@@ -2825,11 +2825,15 @@ list_string (string, separators, quoted) - - /* Parse a single word from STRING, using SEPARATORS to separate fields. - ENDPTR is set to the first character after the word. This is used by -- the `read' builtin. This is never called with SEPARATORS != $IFS; -- it should be simplified. -+ the `read' builtin. -+ -+ This is never called with SEPARATORS != $IFS, and takes advantage of that. - - XXX - this function is very similar to list_string; they should be - combined - XXX */ -+ -+#define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0) -+ - char * - get_word_from_string (stringp, separators, endptr) - char **stringp, *separators, **endptr; -@@ -2837,6 +2841,7 @@ get_word_from_string (stringp, separators, endptr) - register char *s; - char *current_word; - int sindex, sh_style_split, whitesep, xflags; -+ unsigned char local_cmap[UCHAR_MAX+1]; /* really only need single-byte chars here */ - size_t slen; - - if (!stringp || !*stringp || !**stringp) -@@ -2846,20 +2851,23 @@ get_word_from_string (stringp, separators, endptr) - separators[1] == '\t' && - separators[2] == '\n' && - separators[3] == '\0'; -- for (xflags = 0, s = ifs_value; s && *s; s++) -+ memset (local_cmap, '\0', sizeof (local_cmap)); -+ for (xflags = 0, s = separators; s && *s; s++) - { - if (*s == CTLESC) xflags |= SX_NOCTLESC; - if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL; -+ local_cmap[(unsigned char)*s] = 1; /* local charmap of separators */ - } - - s = *stringp; - slen = 0; - - /* Remove sequences of whitespace at the beginning of STRING, as -- long as those characters appear in IFS. */ -- if (sh_style_split || !separators || !*separators) -+ long as those characters appear in SEPARATORS. This happens if -+ SEPARATORS == $' \t\n' or if IFS is unset. */ -+ if (sh_style_split || separators == 0) - { -- for (; *s && spctabnl (*s) && isifs (*s); s++); -+ for (; *s && spctabnl (*s) && islocalsep (*s); s++); - - /* If the string is nothing but whitespace, update it and return. */ - if (!*s) -@@ -2878,9 +2886,9 @@ get_word_from_string (stringp, separators, endptr) - - This obeys the field splitting rules in Posix.2. */ - sindex = 0; -- /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim -- unless multibyte chars are possible. */ -- slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1; -+ /* Don't need string length in ADVANCE_CHAR unless multibyte chars are -+ possible, but need it in string_extract_verbatim for bounds checking */ -+ slen = STRLEN (s); - current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags); - - /* Set ENDPTR to the first character after the end of the word. */ -@@ -2899,19 +2907,19 @@ get_word_from_string (stringp, separators, endptr) - - /* Now skip sequences of space, tab, or newline characters if they are - in the list of separators. */ -- while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex])) -+ while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex])) - sindex++; - - /* If the first separator was IFS whitespace and the current character is - a non-whitespace IFS character, it should be part of the current field - delimiter, not a separate delimiter that would result in an empty field. - Look at POSIX.2, 3.6.5, (3)(b). */ -- if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex])) -+ if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex])) - { - sindex++; - /* An IFS character that is not IFS white space, along with any adjacent - IFS white space, shall delimit a field. */ -- while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex])) -+ while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex])) - sindex++; - } - --- -2.9.3 - diff --git a/bash-4.4-patch-13.patch b/bash-4.4-patch-13.patch deleted file mode 100644 index abfb2de..0000000 --- a/bash-4.4-patch-13.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 1aef9c7b55dcef4af239caf93e01419e1c8e04ad Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 29 Jan 2018 16:03:33 -0500 -Subject: [PATCH] Bash-4.4 patch 13 - ---- - patchlevel.h | 2 +- - redir.c | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 93dbe0db..779671cd 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 12 -+#define PATCHLEVEL 13 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/redir.c b/redir.c -index 25488eaf..1858b0b0 100644 ---- a/redir.c -+++ b/redir.c -@@ -469,6 +469,8 @@ here_document_to_fd (redirectee, ri) - return (fd); - } - -+ SET_CLOSE_ON_EXEC (fd); -+ - errno = r = 0; /* XXX */ - /* write_here_document returns 0 on success, errno on failure. */ - if (redirectee->word) --- -2.13.6 - diff --git a/bash-4.4-patch-14.patch b/bash-4.4-patch-14.patch deleted file mode 100644 index bceb8ea..0000000 --- a/bash-4.4-patch-14.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 2fb21d75bfddd724b0e45d4a51455a166467e496 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 29 Jan 2018 16:03:47 -0500 -Subject: [PATCH] Bash-4.4 patch 14 - ---- - execute_cmd.c | 19 ++++++++++++++++--- - patchlevel.h | 2 +- - 2 files changed, 17 insertions(+), 4 deletions(-) - -diff --git a/execute_cmd.c b/execute_cmd.c -index 2a3df6d6..76a80766 100644 ---- a/execute_cmd.c -+++ b/execute_cmd.c -@@ -726,6 +726,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - { - ofifo = num_fifos (); - ofifo_list = copy_fifo_list ((int *)&osize); -+ begin_unwind_frame ("internal_fifos"); -+ add_unwind_protect (xfree, ofifo_list); - saved_fifo = 1; - } - else -@@ -741,7 +743,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - dispose_exec_redirects (); - #if defined (PROCESS_SUBSTITUTION) - if (saved_fifo) -- free ((void *)ofifo_list); -+ { -+ free ((void *)ofifo_list); -+ discard_unwind_frame ("internal_fifos"); -+ } - #endif - return (last_command_exit_value = EXECUTION_FAILURE); - } -@@ -1060,6 +1065,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - if (nfifo > ofifo) - close_new_fifos ((char *)ofifo_list, osize); - free ((void *)ofifo_list); -+ discard_unwind_frame ("internal_fifos"); - } - #endif - -@@ -4977,9 +4983,14 @@ execute_builtin_or_function (words, builtin, var, redirects, - char *ofifo_list; - #endif - --#if defined (PROCESS_SUBSTITUTION) -+#if defined (PROCESS_SUBSTITUTION) -+ begin_unwind_frame ("saved_fifos"); -+ /* If we return, we longjmp and don't get a chance to restore the old -+ fifo list, so we add an unwind protect to free it */ - ofifo = num_fifos (); - ofifo_list = copy_fifo_list (&osize); -+ if (ofifo_list) -+ add_unwind_protect (xfree, ofifo_list); - #endif - - if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0) -@@ -5063,7 +5074,9 @@ execute_builtin_or_function (words, builtin, var, redirects, - nfifo = num_fifos (); - if (nfifo > ofifo) - close_new_fifos (ofifo_list, osize); -- free (ofifo_list); -+ if (ofifo_list) -+ free (ofifo_list); -+ discard_unwind_frame ("saved_fifos"); - #endif - - return (result); -diff --git a/patchlevel.h b/patchlevel.h -index 779671cd..09a3cc84 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 13 -+#define PATCHLEVEL 14 - - #endif /* _PATCHLEVEL_H_ */ --- -2.13.6 - diff --git a/bash-4.4-patch-15.patch b/bash-4.4-patch-15.patch deleted file mode 100644 index 7d1dccf..0000000 --- a/bash-4.4-patch-15.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 9cce630e80008e74fa9a1d9408367341caf363f2 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 29 Jan 2018 16:04:01 -0500 -Subject: [PATCH] Bash-4.4 patch 15 - ---- - patchlevel.h | 2 +- - subst.c | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 09a3cc84..6e9ed3fc 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 14 -+#define PATCHLEVEL 15 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index dbf0157e..fc00cab0 100644 ---- a/subst.c -+++ b/subst.c -@@ -5906,6 +5906,8 @@ process_substitute (string, open_for_read_in_child) - parent. */ - expanding_redir = 0; - -+ remove_quoted_escapes (string); -+ - subshell_level++; - result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); - subshell_level--; --- -2.13.6 - diff --git a/bash-4.4-patch-16.patch b/bash-4.4-patch-16.patch deleted file mode 100644 index 752b034..0000000 --- a/bash-4.4-patch-16.patch +++ /dev/null @@ -1,68 +0,0 @@ -From c9f1b04651dae16e33f0aa8974c5122e26b362ae Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 29 Jan 2018 16:04:20 -0500 -Subject: [PATCH] Bash-4.4 patch 16 - ---- - lib/sh/zread.c | 23 +++++++++-------------- - patchlevel.h | 2 +- - 2 files changed, 10 insertions(+), 15 deletions(-) - -diff --git a/lib/sh/zread.c b/lib/sh/zread.c -index 868f9705..496f20b8 100644 ---- a/lib/sh/zread.c -+++ b/lib/sh/zread.c -@@ -37,7 +37,10 @@ extern int errno; - # define SEEK_CUR 1 - #endif - -+extern int executing_builtin; -+ - extern void check_signals_and_traps (void); -+extern void check_signals (void); - extern int signal_is_trapped (int); - - /* Read LEN bytes from FD into BUF. Retry the read on EINTR. Any other -@@ -50,21 +53,13 @@ zread (fd, buf, len) - { - ssize_t r; - --#if 0 --#if defined (HAVE_SIGINTERRUPT) -- if (signal_is_trapped (SIGCHLD)) -- siginterrupt (SIGCHLD, 1); --#endif --#endif -- - while ((r = read (fd, buf, len)) < 0 && errno == EINTR) -- check_signals_and_traps (); /* XXX - should it be check_signals()? */ -- --#if 0 --#if defined (HAVE_SIGINTERRUPT) -- siginterrupt (SIGCHLD, 0); --#endif --#endif -+ /* XXX - bash-5.0 */ -+ /* We check executing_builtin and run traps here for backwards compatibility */ -+ if (executing_builtin) -+ check_signals_and_traps (); /* XXX - should it be check_signals()? */ -+ else -+ check_signals (); - - return r; - } -diff --git a/patchlevel.h b/patchlevel.h -index 6e9ed3fc..9074f4dd 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 15 -+#define PATCHLEVEL 16 - - #endif /* _PATCHLEVEL_H_ */ --- -2.13.6 - diff --git a/bash-4.4-patch-17.patch b/bash-4.4-patch-17.patch deleted file mode 100644 index ac3eac8..0000000 --- a/bash-4.4-patch-17.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b3a5ec8dd510a68dc850f3f516c0cf9afd87451f Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 29 Jan 2018 16:04:37 -0500 -Subject: [PATCH] Bash-4.4 patch 17 - ---- - builtins/read.def | 5 +++++ - patchlevel.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/builtins/read.def b/builtins/read.def -index 33821f3f..803bea35 100644 ---- a/builtins/read.def -+++ b/builtins/read.def -@@ -690,6 +690,11 @@ add_char: - input_string[i] = '\0'; - CHECK_ALRM; - -+#if defined (READLINE) -+ if (edit) -+ free (rlbuf); -+#endif -+ - if (retval < 0) - { - t_errno = errno; -diff --git a/patchlevel.h b/patchlevel.h -index 9074f4dd..98e714da 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 16 -+#define PATCHLEVEL 17 - - #endif /* _PATCHLEVEL_H_ */ --- -2.13.6 - diff --git a/bash-4.4-patch-18.patch b/bash-4.4-patch-18.patch deleted file mode 100644 index 853a9e3..0000000 --- a/bash-4.4-patch-18.patch +++ /dev/null @@ -1,38 +0,0 @@ -From eb78197af36bb0fb95493ebf8fce104be6832ec9 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 29 Jan 2018 16:04:56 -0500 -Subject: [PATCH] Bash-4.4 patch 18 - ---- - builtins/read.def | 2 +- - patchlevel.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/builtins/read.def b/builtins/read.def -index 803bea35..b54b3af6 100644 ---- a/builtins/read.def -+++ b/builtins/read.def -@@ -610,7 +610,7 @@ read_builtin (list) - } - - CHECK_ALRM; -- -+ QUIT; /* in case we didn't call check_signals() */ - #if defined (READLINE) - } - #endif -diff --git a/patchlevel.h b/patchlevel.h -index 98e714da..f0ee56e4 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 17 -+#define PATCHLEVEL 18 - - #endif /* _PATCHLEVEL_H_ */ --- -2.13.6 - diff --git a/bash-4.4-patch-19.patch b/bash-4.4-patch-19.patch deleted file mode 100644 index 35e6606..0000000 --- a/bash-4.4-patch-19.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b0776d8c49ab4310fa056ce1033985996c5b9807 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Tue, 6 Feb 2018 16:22:34 -0500 -Subject: [PATCH] Bash-4.4 patch 19 - ---- - lib/readline/display.c | 4 +++- - patchlevel.h | 2 +- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/lib/readline/display.c b/lib/readline/display.c -index 41fb0531..2d2e768a 100644 ---- a/lib/readline/display.c -+++ b/lib/readline/display.c -@@ -771,7 +771,9 @@ rl_redisplay () - appear in the first and last lines of the prompt */ - wadjust = (newlines == 0) - ? prompt_invis_chars_first_line -- : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line); -+ : ((newlines == prompt_lines_estimate) -+ ? (wrap_offset - prompt_invis_chars_first_line) -+ : 0); - - /* fix from Darin Johnson for prompt string with - invisible characters that is longer than the screen width. The -diff --git a/patchlevel.h b/patchlevel.h -index f0ee56e4..a711c495 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 18 -+#define PATCHLEVEL 19 - - #endif /* _PATCHLEVEL_H_ */ --- -2.13.6 - diff --git a/bash-4.4-patch-2.patch b/bash-4.4-patch-2.patch deleted file mode 100644 index 373a92d..0000000 --- a/bash-4.4-patch-2.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 280bd77d8d3e7f7c90c9fa07de3d1e8f8e18ac29 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 14 Nov 2016 14:27:06 -0500 -Subject: [PATCH] Bash-4.4 patch 2 - ---- - patchlevel.h | 2 +- - subst.c | 9 ++++++++- - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 40db1a3..a988d85 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 1 -+#define PATCHLEVEL 2 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index f1a4df1..4d498ef 100644 ---- a/subst.c -+++ b/subst.c -@@ -5931,6 +5931,7 @@ read_comsub (fd, quoted, rflag) - char *istring, buf[128], *bufp, *s; - int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul; - ssize_t bufn; -+ int nullbyte; - - istring = (char *)NULL; - istring_index = istring_size = bufn = tflag = 0; -@@ -5938,6 +5939,8 @@ read_comsub (fd, quoted, rflag) - for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) - skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; - -+ nullbyte = 0; -+ - /* Read the output of the command through the pipe. This may need to be - changed to understand multibyte characters in the future. */ - while (1) -@@ -5956,7 +5959,11 @@ read_comsub (fd, quoted, rflag) - if (c == 0) - { - #if 1 -- internal_warning ("%s", _("command substitution: ignored null byte in input")); -+ if (nullbyte == 0) -+ { -+ internal_warning ("%s", _("command substitution: ignored null byte in input")); -+ nullbyte = 1; -+ } - #endif - continue; - } --- -2.9.3 - diff --git a/bash-4.4-patch-20.patch b/bash-4.4-patch-20.patch deleted file mode 100644 index 41c3dfb..0000000 --- a/bash-4.4-patch-20.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 354efb96f1e4574f458e994163bbe31c76769573 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 1 Jun 2018 10:19:56 -0400 -Subject: [PATCH] saved background process status hash table loop fixes - ---- - jobs.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++------------- - patchlevel.h | 2 +- - 2 files changed, 50 insertions(+), 14 deletions(-) - -diff --git a/jobs.c b/jobs.c -index fc966036..2684632d 100644 ---- a/jobs.c -+++ b/jobs.c -@@ -812,8 +812,22 @@ bgp_add (pid, status) - ps_index_t *bucket, psi; - struct pidstat *ps; - -- bucket = pshash_getbucket (pid); -- psi = bgp_getindex (); -+ /* bucket == existing chain of pids hashing to same value -+ psi = where were going to put this pid/status */ -+ -+ bucket = pshash_getbucket (pid); /* index into pidstat_table */ -+ psi = bgp_getindex (); /* bgpids.head, index into storage */ -+ -+ /* XXX - what if psi == *bucket? */ -+ if (psi == *bucket) -+ { -+#ifdef DEBUG -+ internal_warning ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid); -+#endif -+ bgpids.storage[psi].pid = NO_PID; /* make sure */ -+ psi = bgp_getindex (); /* skip to next one */ -+ } -+ - ps = &bgpids.storage[psi]; - - ps->pid = pid; -@@ -841,32 +855,47 @@ pshash_delindex (psi) - ps_index_t psi; - { - struct pidstat *ps; -+ ps_index_t *bucket; - - ps = &bgpids.storage[psi]; - if (ps->pid == NO_PID) - return; - -- if (ps->bucket_next != NO_PID) -+ if (ps->bucket_next != NO_PIDSTAT) - bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; -- if (ps->bucket_prev != NO_PID) -+ if (ps->bucket_prev != NO_PIDSTAT) - bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; - else -- *(pshash_getbucket (ps->pid)) = ps->bucket_next; -+ { -+ bucket = pshash_getbucket (ps->pid); -+ *bucket = ps->bucket_next; /* deleting chain head in hash table */ -+ } -+ -+ /* clear out this cell, just in case */ -+ ps->pid = NO_PID; -+ ps->bucket_next = ps->bucket_prev = NO_PIDSTAT; - } - - static int - bgp_delete (pid) - pid_t pid; - { -- ps_index_t psi; -+ ps_index_t psi, orig_psi; - - if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) - return 0; - - /* Search chain using hash to find bucket in pidstat_table */ -- for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) -- if (bgpids.storage[psi].pid == pid) -- break; -+ for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) -+ { -+ if (bgpids.storage[psi].pid == pid) -+ break; -+ if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ -+ { -+ internal_warning ("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next", psi); -+ return 0; -+ } -+ } - - if (psi == NO_PIDSTAT) - return 0; /* not found */ -@@ -904,15 +933,22 @@ static int - bgp_search (pid) - pid_t pid; - { -- ps_index_t psi; -+ ps_index_t psi, orig_psi; - - if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) - return -1; - - /* Search chain using hash to find bucket in pidstat_table */ -- for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) -- if (bgpids.storage[psi].pid == pid) -- return (bgpids.storage[psi].status); -+ for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) -+ { -+ if (bgpids.storage[psi].pid == pid) -+ return (bgpids.storage[psi].status); -+ if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ -+ { -+ internal_warning ("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next", psi); -+ return -1; -+ } -+ } - - return -1; - } -diff --git a/patchlevel.h b/patchlevel.h -index a711c495..4a65dc0f 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 19 -+#define PATCHLEVEL 20 - - #endif /* _PATCHLEVEL_H_ */ --- -2.14.4 - diff --git a/bash-4.4-patch-21.patch b/bash-4.4-patch-21.patch deleted file mode 100644 index 8b7ab07..0000000 --- a/bash-4.4-patch-21.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 36f89ff1d8b761c815d8993e9833e6357a57fc6b Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 1 Jun 2018 10:20:32 -0400 -Subject: [PATCH] SIGINT trap handler SIGINT loop fix - ---- - jobs.c | 12 +++++++++++- - patchlevel.h | 2 +- - 2 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/jobs.c b/jobs.c -index 2684632d..5ee21e10 100644 ---- a/jobs.c -+++ b/jobs.c -@@ -2689,7 +2689,17 @@ wait_for (pid) - wait_sigint_received = child_caught_sigint = 0; - if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) - { -- old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); -+ SigHandler *temp_sigint_handler; -+ -+ temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); -+ if (temp_sigint_handler == wait_sigint_handler) -+ { -+#if defined (DEBUG) -+ internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap); -+#endif -+ } -+ else -+ old_sigint_handler = temp_sigint_handler; - waiting_for_child = 0; - if (old_sigint_handler == SIG_IGN) - set_signal_handler (SIGINT, old_sigint_handler); -diff --git a/patchlevel.h b/patchlevel.h -index 4a65dc0f..d87b0ba7 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 20 -+#define PATCHLEVEL 21 - - #endif /* _PATCHLEVEL_H_ */ --- -2.14.4 - diff --git a/bash-4.4-patch-22.patch b/bash-4.4-patch-22.patch deleted file mode 100644 index 7b391c1..0000000 --- a/bash-4.4-patch-22.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 34dbca51a5fb5938db2e69ebb3318bbb182c2902 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 1 Jun 2018 10:22:00 -0400 -Subject: [PATCH] readline multi-key command re-read input fix - ---- - lib/readline/readline.c | 4 ++-- - patchlevel.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/readline/readline.c b/lib/readline/readline.c -index e51df4f0..a05b35e5 100644 ---- a/lib/readline/readline.c -+++ b/lib/readline/readline.c -@@ -1057,7 +1057,7 @@ _rl_subseq_result (r, map, key, got_subseq) - /* We probably shadowed a keymap, so keep going. */ - r = _rl_dispatch (ANYOTHERKEY, m); - } -- else if (r && map[ANYOTHERKEY].function) -+ else if (r < 0 && map[ANYOTHERKEY].function) - { - /* We didn't match (r is probably -1), so return something to - tell the caller that it should try ANYOTHERKEY for an -@@ -1069,7 +1069,7 @@ _rl_subseq_result (r, map, key, got_subseq) - _rl_dispatching_keymap = map; - return -2; - } -- else if (r && got_subseq) -+ else if (r < 0 && got_subseq) /* XXX */ - { - /* OK, back up the chain. */ - if (RL_ISSTATE (RL_STATE_MACROINPUT)) -diff --git a/patchlevel.h b/patchlevel.h -index d87b0ba7..9be226c3 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 21 -+#define PATCHLEVEL 22 - - #endif /* _PATCHLEVEL_H_ */ --- -2.14.4 - diff --git a/bash-4.4-patch-23.patch b/bash-4.4-patch-23.patch deleted file mode 100644 index 5ebfe27..0000000 --- a/bash-4.4-patch-23.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 64447609994bfddeef1061948022c074093e9a9f Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 1 Jun 2018 10:22:36 -0400 -Subject: [PATCH] fix for SIGINT in sourced script - ---- - builtins/trap.def | 4 ++++ - patchlevel.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/builtins/trap.def b/builtins/trap.def -index 57d9b522..d43b0ef6 100644 ---- a/builtins/trap.def -+++ b/builtins/trap.def -@@ -98,6 +98,7 @@ static int display_traps __P((WORD_LIST *)); - #define IGNORE 2 /* Ignore this signal. */ - - extern int posixly_correct, subshell_environment; -+extern int sourcelevel, running_trap; - - int - trap_builtin (list) -@@ -212,6 +213,9 @@ trap_builtin (list) - was SIG_IGN? */ - if (interactive) - set_signal_handler (SIGINT, sigint_sighandler); -+ /* special cases for interactive == 0 */ -+ else if (interactive_shell && (sourcelevel||running_trap)) -+ set_signal_handler (SIGINT, sigint_sighandler); - else - set_signal_handler (SIGINT, termsig_sighandler); - break; -diff --git a/patchlevel.h b/patchlevel.h -index 9be226c3..2060b58f 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 22 -+#define PATCHLEVEL 23 - - #endif /* _PATCHLEVEL_H_ */ --- -2.14.4 - diff --git a/bash-4.4-patch-3.patch b/bash-4.4-patch-3.patch deleted file mode 100644 index 30b81cb..0000000 --- a/bash-4.4-patch-3.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 4f59a8babc53a9f975078c4a003bdc8831c5ee22 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 14 Nov 2016 14:27:23 -0500 -Subject: [PATCH] Bash-4.4 patch 3 - ---- - lib/glob/sm_loop.c | 9 +++++++++ - patchlevel.h | 2 +- - 2 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c -index c3a2aa3..65179e2 100644 ---- a/lib/glob/sm_loop.c -+++ b/lib/glob/sm_loop.c -@@ -330,6 +330,12 @@ PARSE_COLLSYM (p, vp) - for (pc = 0; p[pc]; pc++) - if (p[pc] == L('.') && p[pc+1] == L(']')) - break; -+ if (p[pc] == 0) -+ { -+ if (vp) -+ *vp = INVALID; -+ return (p + pc); -+ } - val = COLLSYM (p, pc); - if (vp) - *vp = val; -@@ -483,6 +489,9 @@ BRACKMATCH (p, test, flags) - c = *p++; - c = FOLD (c); - -+ if (c == L('\0')) -+ return ((test == L('[')) ? savep : (CHAR *)0); -+ - if ((flags & FNM_PATHNAME) && c == L('/')) - /* [/] can never match when matching a pathname. */ - return (CHAR *)0; -diff --git a/patchlevel.h b/patchlevel.h -index a988d85..e7e960c 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 2 -+#define PATCHLEVEL 3 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-patch-4.patch b/bash-4.4-patch-4.patch deleted file mode 100644 index f397be6..0000000 --- a/bash-4.4-patch-4.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 2965eca924466a48c5597ac5c6c86d470e718908 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 14 Nov 2016 14:27:35 -0500 -Subject: [PATCH] Bash-4.4 patch 4 - ---- - jobs.c | 15 +++++++++++++++ - jobs.h | 1 + - patchlevel.h | 2 +- - subst.c | 5 +---- - 4 files changed, 18 insertions(+), 5 deletions(-) - -diff --git a/jobs.c b/jobs.c -index cef3c79..fc96603 100644 ---- a/jobs.c -+++ b/jobs.c -@@ -453,6 +453,21 @@ cleanup_the_pipeline () - discard_pipeline (disposer); - } - -+void -+discard_last_procsub_child () -+{ -+ PROCESS *disposer; -+ sigset_t set, oset; -+ -+ BLOCK_CHILD (set, oset); -+ disposer = last_procsub_child; -+ last_procsub_child = (PROCESS *)NULL; -+ UNBLOCK_CHILD (oset); -+ -+ if (disposer) -+ discard_pipeline (disposer); -+} -+ - struct pipeline_saver * - alloc_pipeline_saver () - { -diff --git a/jobs.h b/jobs.h -index 4ba3513..6df0607 100644 ---- a/jobs.h -+++ b/jobs.h -@@ -190,6 +190,7 @@ extern JOB **jobs; - extern void making_children __P((void)); - extern void stop_making_children __P((void)); - extern void cleanup_the_pipeline __P((void)); -+extern void discard_last_procsub_child __P((void)); - extern void save_pipeline __P((int)); - extern PROCESS *restore_pipeline __P((int)); - extern void start_pipeline __P((void)); -diff --git a/patchlevel.h b/patchlevel.h -index e7e960c..c059f0b 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 3 -+#define PATCHLEVEL 4 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index 4d498ef..298187d 100644 ---- a/subst.c -+++ b/subst.c -@@ -5808,10 +5808,7 @@ process_substitute (string, open_for_read_in_child) - { - #if defined (JOB_CONTROL) - if (last_procsub_child) -- { -- discard_pipeline (last_procsub_child); -- last_procsub_child = (PROCESS *)NULL; -- } -+ discard_last_procsub_child (); - last_procsub_child = restore_pipeline (0); - #endif - --- -2.9.3 - diff --git a/bash-4.4-patch-5.patch b/bash-4.4-patch-5.patch deleted file mode 100644 index 03b9761..0000000 --- a/bash-4.4-patch-5.patch +++ /dev/null @@ -1,42 +0,0 @@ -From f459cbd8be37b28be1dc90315e0ab51d7f211301 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Mon, 14 Nov 2016 14:27:55 -0500 -Subject: [PATCH] Bash-4.4 patch 5 - ---- - builtins/evalstring.c | 3 --- - patchlevel.h | 2 +- - 2 files changed, 1 insertion(+), 4 deletions(-) - -diff --git a/builtins/evalstring.c b/builtins/evalstring.c -index e221591..6dc756c 100644 ---- a/builtins/evalstring.c -+++ b/builtins/evalstring.c -@@ -104,12 +104,9 @@ should_suppress_fork (command) - running_trap == 0 && - *bash_input.location.string == '\0' && - command->type == cm_simple && --#if 0 - signal_is_trapped (EXIT_TRAP) == 0 && - signal_is_trapped (ERROR_TRAP) == 0 && --#else - any_signals_trapped () < 0 && --#endif - command->redirects == 0 && command->value.Simple->redirects == 0 && - ((command->flags & CMD_TIME_PIPELINE) == 0) && - ((command->flags & CMD_INVERT_RETURN) == 0)); -diff --git a/patchlevel.h b/patchlevel.h -index c059f0b..1bc098b 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 4 -+#define PATCHLEVEL 5 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-patch-6.patch b/bash-4.4-patch-6.patch deleted file mode 100644 index a6e3551..0000000 --- a/bash-4.4-patch-6.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 44bfefc553993613c0aff992bc4f3078d738ee1d Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 20 Jan 2017 11:47:31 -0500 -Subject: [PATCH] Bash-4.4 patch 6 - ---- - builtins/pushd.def | 7 ++++++- - patchlevel.h | 2 +- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/builtins/pushd.def b/builtins/pushd.def -index 82653c4..6579e4c 100644 ---- a/builtins/pushd.def -+++ b/builtins/pushd.def -@@ -365,7 +365,7 @@ popd_builtin (list) - break; - } - -- if (which > directory_list_offset || (directory_list_offset == 0 && which == 0)) -+ if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0)) - { - pushd_error (directory_list_offset, which_word ? which_word : ""); - return (EXECUTION_FAILURE); -@@ -387,6 +387,11 @@ popd_builtin (list) - remove that directory from the list and shift the remainder - of the list into place. */ - i = (direction == '+') ? directory_list_offset - which : which; -+ if (i < 0 || i > directory_list_offset) -+ { -+ pushd_error (directory_list_offset, which_word ? which_word : ""); -+ return (EXECUTION_FAILURE); -+ } - free (pushd_directory_list[i]); - directory_list_offset--; - -diff --git a/patchlevel.h b/patchlevel.h -index 1bc098b..14bff9f 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 5 -+#define PATCHLEVEL 6 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-patch-7.patch b/bash-4.4-patch-7.patch deleted file mode 100644 index 2db3d82..0000000 --- a/bash-4.4-patch-7.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 4f747edc625815f449048579f6e65869914dd715 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 20 Jan 2017 11:47:55 -0500 -Subject: [PATCH] Bash-4.4 patch 7 - ---- - bashline.c | 22 ++++++++++++---------- - patchlevel.h | 2 +- - subst.c | 4 ++++ - 3 files changed, 17 insertions(+), 11 deletions(-) - -diff --git a/bashline.c b/bashline.c -index f4fe9f1..0275844 100644 ---- a/bashline.c -+++ b/bashline.c -@@ -142,7 +142,7 @@ static int executable_completion __P((const char *, int)); - static rl_icppfunc_t *save_directory_hook __P((void)); - static void restore_directory_hook __P((rl_icppfunc_t)); - --static int directory_exists __P((const char *)); -+static int directory_exists __P((const char *, int)); - - static void cleanup_expansion_error __P((void)); - static void maybe_make_readline_line __P((char *)); -@@ -3102,18 +3102,20 @@ restore_directory_hook (hookf) - rl_directory_rewrite_hook = hookf; - } - --/* Check whether not the (dequoted) version of DIRNAME, with any trailing slash -- removed, exists. */ -+/* Check whether not DIRNAME, with any trailing slash removed, exists. If -+ SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */ - static int --directory_exists (dirname) -+directory_exists (dirname, should_dequote) - const char *dirname; -+ int should_dequote; - { - char *new_dirname; - int dirlen, r; - struct stat sb; - -- /* First, dequote the directory name */ -- new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character); -+ /* We save the string and chop the trailing slash because stat/lstat behave -+ inconsistently if one is present. */ -+ new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname, rl_completion_quote_character) : savestring (dirname); - dirlen = STRLEN (new_dirname); - if (new_dirname[dirlen - 1] == '/') - new_dirname[dirlen - 1] = '\0'; -@@ -3145,7 +3147,7 @@ bash_filename_stat_hook (dirname) - else if (t = mbschr (local_dirname, '`')) /* XXX */ - should_expand_dirname = '`'; - -- if (should_expand_dirname && directory_exists (local_dirname)) -+ if (should_expand_dirname && directory_exists (local_dirname, 0)) - should_expand_dirname = 0; - - if (should_expand_dirname) -@@ -3155,7 +3157,7 @@ bash_filename_stat_hook (dirname) - have to worry about restoring this setting. */ - global_nounset = unbound_vars_is_error; - unbound_vars_is_error = 0; -- wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE); /* does the right thing */ -+ wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE); /* does the right thing */ - unbound_vars_is_error = global_nounset; - if (wl) - { -@@ -3244,13 +3246,13 @@ bash_directory_completion_hook (dirname) - should_expand_dirname = '`'; - } - -- if (should_expand_dirname && directory_exists (local_dirname)) -+ if (should_expand_dirname && directory_exists (local_dirname, 1)) - should_expand_dirname = 0; - - if (should_expand_dirname) - { - new_dirname = savestring (local_dirname); -- wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE); /* does the right thing */ -+ wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE); /* does the right thing */ - if (wl) - { - *dirname = string_list (wl); -diff --git a/patchlevel.h b/patchlevel.h -index 14bff9f..deb9c5b 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 6 -+#define PATCHLEVEL 7 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index 298187d..027a13e 100644 ---- a/subst.c -+++ b/subst.c -@@ -9458,6 +9458,10 @@ add_twochars: - tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS); /* affects $@ */ - if (word->flags & W_COMPLETE) - tword->flags |= W_COMPLETE; /* for command substitutions */ -+ if (word->flags & W_NOCOMSUB) -+ tword->flags |= W_NOCOMSUB; -+ if (word->flags & W_NOPROCSUB) -+ tword->flags |= W_NOPROCSUB; - - temp = (char *)NULL; - --- -2.9.3 - diff --git a/bash-4.4-patch-8.patch b/bash-4.4-patch-8.patch deleted file mode 100644 index fc435f9..0000000 --- a/bash-4.4-patch-8.patch +++ /dev/null @@ -1,71 +0,0 @@ -From b9f81c2977b82490cd4dc70b0bb292bfbf86bd2c Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 20 Jan 2017 15:38:10 -0500 -Subject: [PATCH] Bash-4.4 patch 8 - ---- - expr.c | 15 +++++++++------ - patchlevel.h | 2 +- - 2 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/expr.c b/expr.c -index 1ddb693..172964a 100644 ---- a/expr.c -+++ b/expr.c -@@ -578,24 +578,23 @@ expcond () - rval = cval = explor (); - if (curtok == QUES) /* found conditional expr */ - { -- readtok (); -- if (curtok == 0 || curtok == COL) -- evalerror (_("expression expected")); - if (cval == 0) - { - set_noeval = 1; - noeval++; - } - -+ readtok (); -+ if (curtok == 0 || curtok == COL) -+ evalerror (_("expression expected")); -+ - val1 = EXP_HIGHEST (); - - if (set_noeval) - noeval--; - if (curtok != COL) - evalerror (_("`:' expected for conditional expression")); -- readtok (); -- if (curtok == 0) -- evalerror (_("expression expected")); -+ - set_noeval = 0; - if (cval) - { -@@ -603,7 +602,11 @@ expcond () - noeval++; - } - -+ readtok (); -+ if (curtok == 0) -+ evalerror (_("expression expected")); - val2 = expcond (); -+ - if (set_noeval) - noeval--; - rval = cval ? val1 : val2; -diff --git a/patchlevel.h b/patchlevel.h -index deb9c5b..16c8740 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 7 -+#define PATCHLEVEL 8 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-patch-9.patch b/bash-4.4-patch-9.patch deleted file mode 100644 index b759e01..0000000 --- a/bash-4.4-patch-9.patch +++ /dev/null @@ -1,80 +0,0 @@ -From e59fb114e9c0436890d110cfdda4d794a63496e7 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 20 Jan 2017 15:38:29 -0500 -Subject: [PATCH] Bash-4.4 patch 9 - ---- - lib/readline/history.c | 16 +++++++--------- - patchlevel.h | 2 +- - 2 files changed, 8 insertions(+), 10 deletions(-) - -diff --git a/lib/readline/history.c b/lib/readline/history.c -index 9ff25a7..129c57a 100644 ---- a/lib/readline/history.c -+++ b/lib/readline/history.c -@@ -279,6 +279,7 @@ add_history (string) - const char *string; - { - HIST_ENTRY *temp; -+ int new_length; - - if (history_stifled && (history_length == history_max_entries)) - { -@@ -295,13 +296,9 @@ add_history (string) - - /* 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 - -+ new_length = history_length; - history_base++; - } - else -@@ -315,7 +312,7 @@ add_history (string) - else - history_size = DEFAULT_HISTORY_INITIAL_SIZE; - the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); -- history_length = 1; -+ new_length = 1; - } - else - { -@@ -325,14 +322,15 @@ add_history (string) - the_history = (HIST_ENTRY **) - xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); - } -- history_length++; -+ new_length = history_length + 1; - } - } - - temp = alloc_history_entry ((char *)string, hist_inittime ()); - -- the_history[history_length] = (HIST_ENTRY *)NULL; -- the_history[history_length - 1] = temp; -+ the_history[new_length] = (HIST_ENTRY *)NULL; -+ the_history[new_length - 1] = temp; -+ history_length = new_length; - } - - /* Change the time stamp of the most recent history entry to STRING. */ -diff --git a/patchlevel.h b/patchlevel.h -index 16c8740..02f1d60 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 8 -+#define PATCHLEVEL 9 - - #endif /* _PATCHLEVEL_H_ */ --- -2.9.3 - diff --git a/bash-4.4-unset-nonblock-stdin.patch b/bash-4.4-unset-nonblock-stdin.patch deleted file mode 100644 index 68ad38c..0000000 --- a/bash-4.4-unset-nonblock-stdin.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/parse.y b/parse.y -index 85f1c4f..9d1cdf8 100644 ---- a/parse.y -+++ b/parse.y -@@ -1453,6 +1453,7 @@ yy_readline_get () - old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); - } - -+ sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */ - current_readline_line = readline (current_readline_prompt ? - current_readline_prompt : ""); diff --git a/bash-4.5-test-modification-time.patch b/bash-4.5-test-modification-time.patch deleted file mode 100644 index 275bbed..0000000 --- a/bash-4.5-test-modification-time.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/config.h.in b/config.h.in ---- a/config.h.in -+++ b/config.h.in -@@ -449,6 +449,7 @@ - #undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC - #undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC - -+#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC - #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC - #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC - #undef HAVE_STRUCT_STAT_ST_ATIMENSEC diff --git a/bash-5.0-patch-1.patch b/bash-5.0-patch-1.patch new file mode 100644 index 0000000..254fd9e --- /dev/null +++ b/bash-5.0-patch-1.patch @@ -0,0 +1,150 @@ +From 4d2e315490b778707b3a3afdfc514d5083a97a11 Mon Sep 17 00:00:00 2001 +From: Chet Ramey +Date: Fri, 18 Jan 2019 15:12:37 -0500 +Subject: [PATCH] Bash-5.0 patch 1: fix pathname expansion of directory names + containing backslashes + +--- + bashline.c | 62 +++++++++++++++++++++++++++++++++++++++++--- + lib/glob/glob_loop.c | 6 ----- + patchlevel.h | 2 +- + 3 files changed, 60 insertions(+), 10 deletions(-) + +diff --git a/bashline.c b/bashline.c +index 2846aabf..75e79f1a 100644 +--- a/bashline.c ++++ b/bashline.c +@@ -231,6 +231,7 @@ static int bash_possible_variable_completions __P((int, int)); + static int bash_complete_command __P((int, int)); + static int bash_possible_command_completions __P((int, int)); + ++static int completion_glob_pattern __P((char *)); + static char *glob_complete_word __P((const char *, int)); + static int bash_glob_completion_internal __P((int)); + static int bash_glob_complete_word __P((int, int)); +@@ -1741,7 +1742,7 @@ bash_default_completion (text, start, end, qc, compflags) + + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ +- if (!matches && glob_pattern_p (text)) ++ if (!matches && completion_glob_pattern ((char *)text)) + { + matches = rl_completion_matches (text, glob_complete_word); + /* A glob expression that matches more than one filename is problematic. +@@ -1850,7 +1851,7 @@ command_word_completion_function (hint_text, state) + glob_matches = (char **)NULL; + } + +- globpat = glob_pattern_p (hint_text); ++ globpat = completion_glob_pattern ((char *)hint_text); + + /* If this is an absolute program name, do not check it against + aliases, reserved words, functions or builtins. We must check +@@ -3713,6 +3714,61 @@ bash_complete_command_internal (what_to_do) + return bash_specific_completion (what_to_do, command_word_completion_function); + } + ++static int ++completion_glob_pattern (string) ++ char *string; ++{ ++ register int c; ++ char *send; ++ int open; ++ ++ DECLARE_MBSTATE; ++ ++ open = 0; ++ send = string + strlen (string); ++ ++ while (c = *string++) ++ { ++ switch (c) ++ { ++ case '?': ++ case '*': ++ return (1); ++ ++ case '[': ++ open++; ++ continue; ++ ++ case ']': ++ if (open) ++ return (1); ++ continue; ++ ++ case '+': ++ case '@': ++ case '!': ++ if (*string == '(') /*)*/ ++ return (1); ++ continue; ++ ++ case '\\': ++ if (*string == 0) ++ return (0); ++ } ++ ++ /* Advance one fewer byte than an entire multibyte character to ++ account for the auto-increment in the loop above. */ ++#ifdef HANDLE_MULTIBYTE ++ string--; ++ ADVANCE_CHAR_P (string, send - string); ++ string++; ++#else ++ ADVANCE_CHAR_P (string, send - string); ++#endif ++ } ++ return (0); ++} ++ + static char *globtext; + static char *globorig; + +@@ -3877,7 +3933,7 @@ bash_vi_complete (count, key) + t = substring (rl_line_buffer, p, rl_point); + } + +- if (t && glob_pattern_p (t) == 0) ++ if (t && completion_glob_pattern (t) == 0) + rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ + FREE (t); + +diff --git a/lib/glob/glob_loop.c b/lib/glob/glob_loop.c +index 5f319cc2..7d6ae211 100644 +--- a/lib/glob/glob_loop.c ++++ b/lib/glob/glob_loop.c +@@ -54,17 +54,11 @@ INTERNAL_GLOB_PATTERN_P (pattern) + continue; + + case L('\\'): +-#if 0 + /* Don't let the pattern end in a backslash (GMATCH returns no match + if the pattern ends in a backslash anyway), but otherwise return 1, + since the matching engine uses backslash as an escape character + and it can be removed. */ + return (*p != L('\0')); +-#else +- /* The pattern may not end with a backslash. */ +- if (*p++ == L('\0')) +- return 0; +-#endif + } + + return 0; +diff --git a/patchlevel.h b/patchlevel.h +index 1cd7c96c..40db1a32 100644 +--- a/patchlevel.h ++++ b/patchlevel.h +@@ -25,6 +25,6 @@ + regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh + looks for to find the patch level (for the sccs version string). */ + +-#define PATCHLEVEL 0 ++#define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +-- +2.17.2 + diff --git a/bash-5.0-patch-2.patch b/bash-5.0-patch-2.patch new file mode 100644 index 0000000..b9858ae --- /dev/null +++ b/bash-5.0-patch-2.patch @@ -0,0 +1,96 @@ +From ddf3f643cb9b9a2ca8e6d996c605e4332204874c Mon Sep 17 00:00:00 2001 +From: Chet Ramey +Date: Fri, 18 Jan 2019 15:13:57 -0500 +Subject: [PATCH] Bash-5.0 patch 2: fix expansion of aliases whose value ends + with an unquoted tab + +--- + parse.y | 5 ++++- + parser.h | 1 + + patchlevel.h | 2 +- + y.tab.c | 5 ++++- + 4 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/parse.y b/parse.y +index 3ff87bcc..07e6e3e4 100644 +--- a/parse.y ++++ b/parse.y +@@ -2557,12 +2557,14 @@ next_alias_char: + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && ++ (parser_state & PST_ENDALIAS) == 0 && /* only once */ + shell_input_line_index > 0 && +- shell_input_line[shell_input_line_index-1] != ' ' && ++ shellblank (shell_input_line[shell_input_line_index-1]) == 0 && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { ++ parser_state |= PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } + #endif +@@ -2571,6 +2573,7 @@ pop_alias: + /* This case works for PSH_DPAREN as well */ + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) + { ++ parser_state &= ~PST_ENDALIAS; + pop_string (); + uc = shell_input_line[shell_input_line_index]; + if (uc) +diff --git a/parser.h b/parser.h +index 54dd2c88..6d08915d 100644 +--- a/parser.h ++++ b/parser.h +@@ -47,6 +47,7 @@ + #define PST_REPARSE 0x040000 /* re-parsing in parse_string_to_word_list */ + #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */ + #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ ++#define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */ + + /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ + struct dstack { +diff --git a/patchlevel.h b/patchlevel.h +index 40db1a32..a988d852 100644 +--- a/patchlevel.h ++++ b/patchlevel.h +@@ -25,6 +25,6 @@ + regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh + looks for to find the patch level (for the sccs version string). */ + +-#define PATCHLEVEL 1 ++#define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +diff --git a/y.tab.c b/y.tab.c +index 1abe2c50..7efce3c8 100644 +--- a/y.tab.c ++++ b/y.tab.c +@@ -4873,12 +4873,14 @@ next_alias_char: + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && ++ (parser_state & PST_ENDALIAS) == 0 && /* only once */ + shell_input_line_index > 0 && +- shell_input_line[shell_input_line_index-1] != ' ' && ++ shellblank (shell_input_line[shell_input_line_index-1]) == 0 && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { ++ parser_state |= PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } + #endif +@@ -4887,6 +4889,7 @@ pop_alias: + /* This case works for PSH_DPAREN as well */ + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) + { ++ parser_state &= ~PST_ENDALIAS; + pop_string (); + uc = shell_input_line[shell_input_line_index]; + if (uc) +-- +2.17.2 + diff --git a/bash-requires.patch b/bash-requires.patch index 2766431..35670bd 100644 --- a/bash-requires.patch +++ b/bash-requires.patch @@ -1,8 +1,8 @@ diff --git a/builtins.h b/builtins.h -index 0cfea18..a6ef958 100644 +index dac95fd..5b7e811 100644 --- a/builtins.h +++ b/builtins.h -@@ -42,6 +42,7 @@ +@@ -45,6 +45,7 @@ #define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ #define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */ #define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */ @@ -11,16 +11,16 @@ index 0cfea18..a6ef958 100644 #define BASE_INDENT 4 diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c -index 4f51201..283bfea 100644 +index 4f51201..91c25db 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -69,10 +69,15 @@ extern char *strcpy (); #define whitespace(c) (((c) == ' ') || ((c) == '\t')) /* Flag values that builtins can have. */ -+/* These flags are for the C code generator, ++/* These flags are for the C code generator, + the C which is produced (./builtin.c) -+ includes the flags definitions found ++ includes the flags definitions found + in ../builtins.h */ #define BUILTIN_FLAG_SPECIAL 0x01 #define BUILTIN_FLAG_ASSIGNMENT 0x02 @@ -30,7 +30,7 @@ index 4f51201..283bfea 100644 #define BASE_INDENT 4 -@@ -173,11 +178,20 @@ char *posix_builtins[] = +@@ -173,11 +178,19 @@ char *posix_builtins[] = (char *)NULL }; @@ -40,7 +40,6 @@ index 4f51201..283bfea 100644 + ".", "command", "exec", "source", "inlib", + (char *)NULL +}; -+ + /* Forward declarations. */ static int is_special_builtin (); @@ -51,17 +50,16 @@ index 4f51201..283bfea 100644 #if !defined (HAVE_RENAME) static int rename (); -@@ -831,6 +845,9 @@ builtin_handler (self, defs, arg) +@@ -831,6 +844,8 @@ builtin_handler (self, defs, arg) new->flags |= BUILTIN_FLAG_LOCALVAR; if (is_posix_builtin (name)) new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; + if (is_requires_builtin (name)) + new->flags |= BUILTIN_FLAG_REQUIRES; -+ array_add ((char *)new, defs->builtins); building_builtin = 1; -@@ -1250,12 +1267,13 @@ write_builtins (defs, structfile, externfile) +@@ -1250,12 +1265,13 @@ write_builtins (defs, structfile, externfile) else fprintf (structfile, "(sh_builtin_func_t *)0x0, "); @@ -76,7 +74,7 @@ index 4f51201..283bfea 100644 document_name (builtin)); /* Don't translate short document summaries that are identical -@@ -1645,6 +1663,13 @@ is_posix_builtin (name) +@@ -1645,6 +1661,13 @@ is_posix_builtin (name) return (_find_in_table (name, posix_builtins)); } @@ -91,15 +89,15 @@ index 4f51201..283bfea 100644 static int rename (from, to) diff --git a/doc/bash.1 b/doc/bash.1 -index c21e877..04ce845 100644 +index d91f1fd..111a66d 100644 --- a/doc/bash.1 +++ b/doc/bash.1 -@@ -238,6 +238,14 @@ The shell becomes restricted (see +@@ -239,6 +239,14 @@ The shell becomes restricted (see .B "RESTRICTED SHELL" below). .TP +.B \-\-rpm-requires -+Produce the list of files that are required for the ++Produce the list of files that are required for the +shell script to run. This implies '-n' and is subject +to the same limitations as compile time error checking checking; +Command substitutions, Conditional expressions and @@ -110,15 +108,15 @@ index c21e877..04ce845 100644 Equivalent to \fB\-v\fP. .TP diff --git a/doc/bashref.texi b/doc/bashref.texi -index 06957b6..e3fe925 100644 +index d33cd57..6fc4d18 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi -@@ -6243,6 +6243,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash +@@ -6453,6 +6453,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash @item --restricted Make the shell a restricted shell (@pxref{The Restricted Shell}). +@item --rpm-requires -+Produce the list of files that are required for the ++Produce the list of files that are required for the +shell script to run. This implies '-n' and is subject +to the same limitations as compile time error checking checking; +Command substitutions, Conditional expressions and @command{eval} @@ -128,31 +126,24 @@ index 06957b6..e3fe925 100644 Equivalent to @option{-v}. Print shell input lines as they're read. diff --git a/eval.c b/eval.c -index db863e7..5a5af32 100644 +index f02d6e4..76c1e8d 100644 --- a/eval.c +++ b/eval.c -@@ -56,6 +56,7 @@ extern int need_here_doc; - extern int current_command_number, current_command_line_count, line_number; - extern int expand_aliases; - extern char *ps0_prompt; -+extern int rpm_requires; - - #if defined (HAVE_POSIX_SIGNALS) - extern sigset_t top_level_mask; -@@ -148,7 +149,7 @@ reader_loop () +@@ -142,7 +142,8 @@ reader_loop () if (read_command () == 0) { - if (interactive_shell == 0 && read_but_dont_execute) ++ + if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires)) { last_command_exit_value = EXECUTION_SUCCESS; dispose_command (global_command); diff --git a/execute_cmd.c b/execute_cmd.c -index b5cd405..88c7a5c 100644 +index 8b3c83a..4eae19c 100644 --- a/execute_cmd.c +++ b/execute_cmd.c -@@ -533,6 +533,8 @@ async_redirect_stdin () +@@ -538,6 +538,8 @@ async_redirect_stdin () #define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0) @@ -161,7 +152,7 @@ index b5cd405..88c7a5c 100644 /* Execute the command passed in COMMAND, perhaps doing it asynchronously. COMMAND is exactly what read_command () places into GLOBAL_COMMAND. ASYNCHROUNOUS, if non-zero, says to do this command in the background. -@@ -565,7 +567,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, +@@ -569,7 +571,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (breaking || continuing) return (last_command_exit_value); @@ -176,9 +167,9 @@ index b5cd405..88c7a5c 100644 return (EXECUTION_SUCCESS); QUIT; -@@ -5752,7 +5760,7 @@ execute_intern_function (name, funcdef) - - if (check_identifier (name, posixly_correct) == 0) +@@ -2813,7 +2821,7 @@ execute_for_command (for_command) + save_line_number = line_number; + if (check_identifier (for_command->name, 1) == 0) { - if (posixly_correct && interactive_shell == 0) + if (posixly_correct && interactive_shell == 0 && rpm_requires == 0) @@ -186,50 +177,24 @@ index b5cd405..88c7a5c 100644 last_command_exit_value = EX_BADUSAGE; jump_to_top_level (ERREXIT); diff --git a/execute_cmd.h b/execute_cmd.h -index 62bec82..d42dc85 100644 +index dc2f15e..506fff4 100644 --- a/execute_cmd.h +++ b/execute_cmd.h -@@ -22,6 +22,8 @@ +@@ -22,6 +22,9 @@ #define _EXECUTE_CMD_H_ #include "stdc.h" +#include "variables.h" +#include "command.h" ++ #if defined (ARRAY_VARS) struct func_array_state diff --git a/make_cmd.c b/make_cmd.c -index b42e9ff..a982fe0 100644 +index ecbbfd6..3d8bfa4 100644 --- a/make_cmd.c +++ b/make_cmd.c -@@ -42,11 +42,15 @@ - #include "flags.h" - #include "make_cmd.h" - #include "dispose_cmd.h" -+#include "execute_cmd.h" - #include "variables.h" - #include "subst.h" - #include "input.h" - #include "ocache.h" - #include "externs.h" -+#include "builtins.h" -+ -+#include "builtins/common.h" - - #if defined (JOB_CONTROL) - #include "jobs.h" -@@ -57,6 +61,10 @@ - extern int line_number, current_command_line_count, parser_state; - extern int last_command_exit_value; - extern int shell_initialized; -+extern int rpm_requires; -+ -+static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz" -+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - int here_doc_first_line = 0; - -@@ -839,6 +847,27 @@ make_coproc_command (name, command) +@@ -828,6 +828,27 @@ make_coproc_command (name, command) return (make_command (cm_coproc, (SIMPLE_COM *)temp)); } @@ -241,9 +206,9 @@ index b42e9ff..a982fe0 100644 + if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/'))) + return; + -+ /* ++ /* + if the executable is called via variable substitution we can -+ not dermine what it is at compile time. ++ not dermine what it is at compile time. + + if the executable consists only of characters not in the + alphabet we do not consider it a dependency just an artifact @@ -257,7 +222,7 @@ index b42e9ff..a982fe0 100644 /* Reverse the word list and redirection list in the simple command has just been parsed. It seems simpler to do this here the one time then by any other method that I can think of. */ -@@ -856,6 +885,27 @@ clean_simple_command (command) +@@ -845,6 +866,28 @@ clean_simple_command (command) REVERSE_LIST (command->value.Simple->redirects, REDIRECT *); } @@ -281,15 +246,16 @@ index b42e9ff..a982fe0 100644 + output_requirement (find_function(cmd0) ? "function" : "executable", cmd0); + } + } /*rpm_requires*/ ++ + parser_state &= ~PST_REDIRLIST; return (command); } diff --git a/shell.c b/shell.c -index 7f63969..a0fb7ce 100644 +index a2b2a55..c5d99b3 100644 --- a/shell.c +++ b/shell.c -@@ -201,6 +201,9 @@ int have_devfd = 0; +@@ -193,6 +193,9 @@ int have_devfd = 0; /* The name of the .(shell)rc file. */ static char *bashrc_file = DEFAULT_BASHRC; @@ -299,7 +265,7 @@ index 7f63969..a0fb7ce 100644 /* Non-zero means to act more like the Bourne shell on startup. */ static int act_like_sh; -@@ -264,6 +267,7 @@ static const struct { +@@ -259,6 +262,7 @@ static const struct { { "protected", Int, &protected_mode, (char **)0x0 }, #endif { "rcfile", Charp, (int *)0x0, &bashrc_file }, @@ -307,7 +273,7 @@ index 7f63969..a0fb7ce 100644 #if defined (RESTRICTED_SHELL) { "restricted", Int, &restricted, (char **)0x0 }, #endif -@@ -500,6 +504,12 @@ main (argc, argv, env) +@@ -496,6 +500,12 @@ main (argc, argv, env) if (dump_translatable_strings) read_but_dont_execute = 1; @@ -320,6 +286,36 @@ index 7f63969..a0fb7ce 100644 if (running_setuid && privileged_mode == 0) disable_priv_mode (); +diff --git a/shell.h b/shell.h +index 8072605..6c4149d 100644 +--- a/shell.h ++++ b/shell.h +@@ -34,12 +34,15 @@ + #include "maxpath.h" + #include "unwind_prot.h" + #include "dispose_cmd.h" ++#include "execute_cmd.h" + #include "make_cmd.h" + #include "ocache.h" + #include "subst.h" + #include "sig.h" + #include "pathnames.h" + #include "externs.h" ++#include "builtins.h" ++#include "builtins/common.h" + + extern int EOF_Reached; + +@@ -99,6 +102,9 @@ extern int interactive, interactive_shell; + extern int startup_state; + extern int reading_shell_script; + extern int shell_initialized; ++extern int rpm_requires; ++static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz" ++ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + extern int bash_argv_initialized; + extern int subshell_environment; + extern int current_command_number; -- -2.9.3 +2.17.2 diff --git a/bash-tty-tests.patch b/bash-tty-tests.patch index 83569b1..f9b6532 100644 --- a/bash-tty-tests.patch +++ b/bash-tty-tests.patch @@ -1,5 +1,5 @@ diff --git a/tests/exec.right b/tests/exec.right -index 81224fa..ff77f09 100644 +index 6075cc8..0b3f02c 100644 --- a/tests/exec.right +++ b/tests/exec.right @@ -51,7 +51,6 @@ this is ohio-state @@ -11,14 +11,14 @@ index 81224fa..ff77f09 100644 1 1 diff --git a/tests/execscript b/tests/execscript -index 3415ae3..75c48a4 100644 +index c1819de..9227a4a 100644 --- a/tests/execscript +++ b/tests/execscript @@ -108,8 +108,6 @@ ${THIS_SH} ./exec6.sub # checks for properly deciding what constitutes an executable file ${THIS_SH} ./exec7.sub --${THIS_SH} -i ./exec8.sub +-${THIS_SH} -i ${PWD}/exec8.sub - ${THIS_SH} ./exec9.sub @@ -43,7 +43,7 @@ index 73cb704..a92fe7f 100644 abc ab diff --git a/tests/read.tests b/tests/read.tests -index fe27dae..10346f7 100644 +index f67cd00..083f4a4 100644 --- a/tests/read.tests +++ b/tests/read.tests @@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; } @@ -57,5 +57,5 @@ index fe27dae..10346f7 100644 ${THIS_SH} ./read3.sub -- -2.9.3 +2.17.2 diff --git a/bash.spec b/bash.spec index 74c9c5e..ce35907 100644 --- a/bash.spec +++ b/bash.spec @@ -1,13 +1,12 @@ #% define beta_tag rc2 -%global _hardened_build 1 -%define patchleveltag .23 -%define baseversion 4.4 +%define patchleveltag .2 +%define baseversion 5.0 %bcond_without tests Version: %{baseversion}%{patchleveltag} Name: bash Summary: The GNU Bourne Again shell -Release: 7%{?dist} +Release: 1%{?dist} License: GPLv3+ Url: https://www.gnu.org/software/bash Source0: https://ftp.gnu.org/gnu/bash/bash-%{baseversion}.tar.gz @@ -21,23 +20,30 @@ Source3: dot-bash_logout # Official upstream patches # Patches are converted to apply with '-p1' -%{lua:for i=1,23 do print(string.format("Patch%u: bash-4.4-patch-%u.patch\n", i, i)) end} +%{lua:for i=1,2 do print(string.format("Patch%u: bash-5.0-patch-%u.patch\n", i, i)) end} # Other patches -Patch101: bash-2.02-security.patch -Patch102: bash-2.03-paths.patch -Patch103: bash-2.03-profile.patch -Patch104: bash-2.05a-interpreter.patch -Patch105: bash-2.05b-debuginfo.patch -Patch106: bash-2.05b-manso.patch -Patch107: bash-2.05b-pgrp_sync.patch -Patch108: bash-2.05b-xcc.patch -Patch109: bash-3.2-audit.patch -Patch110: bash-3.2-ssh_source_bash.patch -Patch112: bash-infotags.patch -Patch113: bash-requires.patch -Patch114: bash-setlocale.patch -Patch115: bash-tty-tests.patch +# We don't want to add '/etc:/usr/etc' in standard utils path. +Patch101: bash-2.03-paths.patch +# Non-interactive shells beginning with argv[0][0] == '-' should run the startup files when not in posix mode. +Patch102: bash-2.03-profile.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=60870 +Patch103: bash-2.05a-interpreter.patch +# Generate info for debuginfo files. +Patch104: bash-2.05b-debuginfo.patch +# Pid passed to setpgrp() can not be pid of a zombie process. +Patch105: bash-2.05b-pgrp_sync.patch +# Enable audit logs +Patch106: bash-3.2-audit.patch +# Source bashrc file when bash is run under ssh. +Patch107: bash-3.2-ssh_source_bash.patch +# Use makeinfo to generate .texi file +Patch108: bash-infotags.patch +# Try to pick up latest `--rpm-requires` patch from http://git.altlinux.org/gears/b/bash4.git +Patch109: bash-requires.patch +Patch110: bash-setlocale.patch +# Disable tty tests while doing bash builds +Patch111: bash-tty-tests.patch # 484809, check if interp section is NOBITS Patch116: bash-4.0-nobits.patch @@ -49,57 +55,40 @@ Patch117: bash-4.1-examples.patch # when output does not succeed due to EPIPE Patch118: bash-4.1-broken_pipe.patch -# Enable system-wide .bash_logout for login shells +# # Enable system-wide .bash_logout for login shells Patch119: bash-4.2-rc2-logout.patch - +# # Static analyzis shows some issues in bash-2.05a-interpreter.patch Patch120: bash-4.2-coverity.patch -# Don't call malloc in signal handler -Patch121: bash-4.1-defer-sigchld-trap.patch - # 799958, updated info about trap +# This patch should be upstreamed. Patch122: bash-4.2-manpage_trap.patch # https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow +# This patch should be upstreamed. Patch123: bash-4.2-size_type.patch - +# # 1112710 - mention ulimit -c and -f POSIX block size +# This patch should be upstreamed. Patch124: bash-4.3-man-ulimit.patch - +# # 1102815 - fix double echoes in vi visual mode Patch125: bash-4.3-noecho.patch - -#1241533,1224855 - bash leaks memory when LC_ALL set +# +# #1241533,1224855 - bash leaks memory when LC_ALL set Patch126: bash-4.3-memleak-lc_all.patch - +# # bash-4.4 builds loadable builtin examples by default # this patch disables it Patch127: bash-4.4-no-loadable-builtins.patch -# 1068697 - Explicitly unset nonblocking mode while reading from stdin -# This should be dropped while rebasing to bash-4.5 -Patch128: bash-4.4-unset-nonblock-stdin.patch - -# 1389838 - command builtin should not abort on variable assignment errors -# This should be dropped while rebasing to bash-4.5 -Patch129: bash-4.4-assignment-error.patch - -# 1458008 - test builtin ignores subsecond while comparing file modification times -# This should be dropped while rebasing to bash-4.5 -Patch130: bash-4.5-test-modification-time.patch - -# 1556867 - case in a for loop inside subshell causes syntax error -# This should be dropped while rebasing to bash-4.5 -Patch131: bash-4.4-case-in-command-subst.patch - -# 1637018 -Patch132: bash-4.4-coverity.patch - BuildRequires: gcc BuildRequires: texinfo bison BuildRequires: ncurses-devel BuildRequires: autoconf, gettext +# Required for bash tests +BuildRequires: glibc-all-langpacks Requires: filesystem >= 3 Provides: /bin/sh Provides: /bin/bash @@ -112,8 +101,7 @@ incorporates useful features from the Korn shell (ksh) and the C shell %package devel Summary: Development headers for %{name} -Requires: %{name} = %{version}-%{release} -Requires: pkgconf-pkg-config +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel This package contains development headers for %{name}. @@ -154,7 +142,7 @@ sed -i -e 's,bashref\.info,bash.info,' doc/bashref.info %make_install install-headers -mkdir -p %{buildroot}/etc +mkdir -p %{buildroot}/%{_sysconfdir} # make manpages for bash builtins as per suggestion in DOC/README pushd doc @@ -191,7 +179,7 @@ rm -f %{buildroot}/%{_mandir}/man1/false.1 ln -sf bash %{buildroot}%{_bindir}/sh rm -f %{buildroot}%{_infodir}/dir -mkdir -p %{buildroot}/etc/skel +mkdir -p %{buildroot}%{_sysconfdir}/skel install -p -m644 %SOURCE1 %{buildroot}/etc/skel/.bashrc install -p -m644 %SOURCE2 %{buildroot}/etc/skel/.bash_profile install -p -m644 %SOURCE3 %{buildroot}/etc/skel/.bash_logout @@ -234,7 +222,7 @@ mkdir -p %{buildroot}/%{_pkgdocdir}/doc rm -rf examples/loadables for file in CHANGES COMPAT NEWS NOTES POSIX RBASH README examples do - cp -rp "$file" %{buildroot}/%{_pkgdocdir}/"$file" + cp -rp "$file" %{buildroot}%{_pkgdocdir}/"$file" echo "%%doc %{_pkgdocdir}/$file" >> %{name}-doc.files done echo "%%doc %{_pkgdocdir}/doc" >> %{name}-doc.files @@ -320,6 +308,10 @@ end %{_libdir}/pkgconfig/%{name}.pc %changelog +* Thu Feb 14 2019 Siteshwar Vashisht - 5.0.2-1 +- Rebase to bash 5.0 + Resolves: #1675080 + * Thu Jan 31 2019 Fedora Release Engineering - 4.4.23-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild diff --git a/sources b/sources index fd6bdf9..dff100d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (bash-4.4.tar.gz) = 73de3b425faaac55e45456b0f6f6d8077b5dfa7bb76e0d1894a19361b4a2b6bd4fbbe182117ddbfe9b07b4d898fba03537c261badc9533dd3c0da891764c7f29 +SHA512 (bash-5.0.tar.gz) = bb4519f06e278f271d08722b531e49d2e842cc3e0b02a6b3eee422e2efcb5b6226111af43f5e5eae56beb85ac8bfebcd6a4aacbabb8f609e529aa4d571890864