diff --git a/bash-5.0-patch12.patch b/bash-5.0-patch12.patch new file mode 100644 index 0000000000000000000000000000000000000000..34a9a493142182d17fc0218202519a79498e7cb3 --- /dev/null +++ b/bash-5.0-patch12.patch @@ -0,0 +1,50 @@ +author Chet Ramey 2020-02-07 15:16:28 -0500 +committer Chet Ramey 2020-02-07 15:16:28 -0500 +commit b0852fb54efbcee630847fcfdc435133f82043b9 (patch) +tree b573556243ddd6eb448a39fb0d4dc44630e16e42 +parent d894cfd104086ddf68c286e67a5fb2e02eb43b7b (diff) +download bash-b0852fb54efbcee630847fcfdc435133f82043b9.tar.gz +Bash-5.0 patch 12: fix problems moving back beyond start of history +2 files changed, 5 insertions, 2 deletions +diff --git a/lib/readline/misc.c b/lib/readline/misc.c +index 64b1457d..42005b0c 100644 +--- a/lib/readline/misc.c ++++ b/lib/readline/misc.c +@@ -576,6 +576,7 @@ int + rl_get_previous_history (int count, int key) + { + HIST_ENTRY *old_temp, *temp; ++ int had_saved_line; + + if (count < 0) + return (rl_get_next_history (-count, key)); +@@ -588,6 +589,7 @@ rl_get_previous_history (int count, int key) + _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; + + /* If we don't have a line saved, then save this one. */ ++ had_saved_line = _rl_saved_line_for_history != 0; + rl_maybe_save_line (); + + /* If the current line has changed, save the changes. */ +@@ -611,7 +613,8 @@ rl_get_previous_history (int count, int key) + + if (temp == 0) + { +- rl_maybe_unsave_line (); ++ if (had_saved_line == 0) ++ _rl_free_saved_history_line (); + rl_ding (); + } + else +diff --git a/patchlevel.h b/patchlevel.h +index 772676c8..93dbe0db 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_ */ \ No newline at end of file diff --git a/bash-5.0-patch13.patch b/bash-5.0-patch13.patch new file mode 100644 index 0000000000000000000000000000000000000000..65b2dee751f9629081760cacd3c222aa78de2cd5 --- /dev/null +++ b/bash-5.0-patch13.patch @@ -0,0 +1,56 @@ +author Chet Ramey 2020-02-07 15:17:29 -0500 +committer Chet Ramey 2020-02-07 15:17:29 -0500 +commit f747f9ff4c8aed2d51fa54db3cb10e8118034753 (patch) +tree e0cc02859e5d03ec7a6dfd18a9663295f8b8e7ba +parent b0852fb54efbcee630847fcfdc435133f82043b9 (diff) +download bash-f747f9ff4c8aed2d51fa54db3cb10e8118034753.tar.gz +Bash-5.0 patch 13: reading history entries with timestamps can result in joined entries +2 files changed, 15 insertions, 2 deletions +diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c +index a8a92aa3..6c3adc9b 100644 +--- a/lib/readline/histfile.c ++++ b/lib/readline/histfile.c +@@ -369,9 +369,11 @@ read_history_range (const char *filename, int from, int to) + } + + has_timestamps = HIST_TIMESTAMP_START (buffer); +- history_multiline_entries += has_timestamps && history_write_timestamps; ++ history_multiline_entries += has_timestamps && history_write_timestamps; + + /* Skip lines until we are at FROM. */ ++ if (has_timestamps) ++ last_ts = buffer; + for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) + if (*line_end == '\n') + { +@@ -380,7 +382,18 @@ read_history_range (const char *filename, int from, int to) + line. We should check more extensively here... */ + if (HIST_TIMESTAMP_START(p) == 0) + current_line++; ++ else ++ last_ts = p; + line_start = p; ++ /* If we are at the last line (current_line == from) but we have ++ timestamps (has_timestamps), then line_start points to the ++ text of the last command, and we need to skip to its end. */ ++ if (current_line >= from && has_timestamps) ++ { ++ for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++) ++ ; ++ line_start = (*line_end == '\n') ? line_end + 1 : line_end; ++ } + } + + /* If there are lines left to gobble, then gobble them now. */ +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/bash-5.0-patch14.patch b/bash-5.0-patch14.patch new file mode 100644 index 0000000000000000000000000000000000000000..fd66d05689be84295c2d06fc5bbd41063245a150 --- /dev/null +++ b/bash-5.0-patch14.patch @@ -0,0 +1,38 @@ +author Chet Ramey 2020-02-07 15:18:41 -0500 +committer Chet Ramey 2020-02-07 15:18:41 -0500 +commit 8b6524c482573ea12eb20be756cdb8ca31d945f3 (patch) +tree db2dfe353344050dba07dff77391d0792988b105 +parent f747f9ff4c8aed2d51fa54db3cb10e8118034753 (diff) +download bash-8b6524c482573ea12eb20be756cdb8ca31d945f3.tar.gz +Bash-5.0 patch 14: edit-and-execute-command does not handle empty command lines +2 files changed, 3 insertions, 6 deletions +diff --git a/bashline.c b/bashline.c +index 824ea9d9..97adaa0f 100644 +--- a/bashline.c ++++ b/bashline.c +@@ -961,11 +961,8 @@ edit_and_execute_command (count, c, editing_mode, edit_command) + /* This breaks down when using command-oriented history and are not + finished with the command, so we should not ignore the last command */ + using_history (); +- if (rl_line_buffer[0]) +- { +- current_command_line_count++; /* for rl_newline above */ +- bash_add_history (rl_line_buffer); +- } ++ current_command_line_count++; /* for rl_newline above */ ++ bash_add_history (rl_line_buffer); + current_command_line_count = 0; /* for dummy history entry */ + bash_add_history (""); + history_lines_this_session++; +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_ */ \ No newline at end of file diff --git a/bash-5.0-patch15.patch b/bash-5.0-patch15.patch new file mode 100644 index 0000000000000000000000000000000000000000..284565deebfa83c4a8e611d09dafe2a42af7e55a --- /dev/null +++ b/bash-5.0-patch15.patch @@ -0,0 +1,58 @@ +author Chet Ramey 2020-02-07 15:19:53 -0500 +committer Chet Ramey 2020-02-07 15:19:53 -0500 +commit ad1b3e68229273b4983b607c5eeb56551536c583 (patch) +tree b4b89fb13929b42a51740b2a6b50e387bede1779 +parent 8b6524c482573ea12eb20be756cdb8ca31d945f3 (diff) +download bash-ad1b3e68229273b4983b607c5eeb56551536c583.tar.gz +Bash-5.0 patch 15: aliases and -c commands can cause premature termination +2 files changed, 5 insertions, 3 deletions +diff --git a/builtins/evalstring.c b/builtins/evalstring.c +index cadc9bc0..2f13a66a 100644 +--- a/builtins/evalstring.c ++++ b/builtins/evalstring.c +@@ -91,6 +91,7 @@ should_suppress_fork (command) + return (startup_state == 2 && parse_and_execute_level == 1 && + running_trap == 0 && + *bash_input.location.string == '\0' && ++ parser_expanding_alias () == 0 && + command->type == cm_simple && + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && +@@ -105,6 +106,7 @@ can_optimize_connection (command) + COMMAND *command; + { + return (*bash_input.location.string == '\0' && ++ parser_expanding_alias () == 0 && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && + command->value.Connection->second->type == cm_simple); + } +@@ -290,7 +292,7 @@ parse_and_execute (string, from_file, flags) + + with_input_from_string (string, from_file); + clear_shell_input_line (); +- while (*(bash_input.location.string)) ++ while (*(bash_input.location.string) || parser_expanding_alias ()) + { + command = (COMMAND *)NULL; + +@@ -545,7 +547,7 @@ parse_string (string, from_file, flags, endp) + ostring = string; + + with_input_from_string (string, from_file); +- while (*(bash_input.location.string)) ++ while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */ + { + command = (COMMAND *)NULL; + +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_ */ \ No newline at end of file diff --git a/bash-5.0-patch16.patch b/bash-5.0-patch16.patch new file mode 100644 index 0000000000000000000000000000000000000000..44cc6a2244ed73a7a332e4c1090dca875c232835 --- /dev/null +++ b/bash-5.0-patch16.patch @@ -0,0 +1,47 @@ +author Chet Ramey 2020-02-07 15:20:38 -0500 +committer Chet Ramey 2020-02-07 15:20:38 -0500 +commit 6c6454cb18d7cd30b3b26d5ba6479431e599f3ed (patch) +tree f5bf71122c75efe5409dffc888cea930a6d9ea49 +parent ad1b3e68229273b4983b607c5eeb56551536c583 (diff) +download bash-6c6454cb18d7cd30b3b26d5ba6479431e599f3ed.tar.gz +Bash-5.0 patch 16: bash waits too long to reap /dev/fd process substitutions with loops and group commandsHEADmaster +2 files changed, 17 insertions, 1 deletions +diff --git a/execute_cmd.c b/execute_cmd.c +index f1d74bfe..3864986d 100644 +--- a/execute_cmd.c ++++ b/execute_cmd.c +@@ -1103,6 +1103,22 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, + free ((void *)ofifo_list); + discard_unwind_frame ("internal_fifos"); + } ++# if defined (HAVE_DEV_FD) ++ /* Reap process substitutions at the end of loops */ ++ switch (command->type) ++ { ++ case cm_while: ++ case cm_until: ++ case cm_for: ++ case cm_group: ++# if defined (ARITH_FOR_COMMAND) ++ case cm_arith_for: ++# endif ++ reap_procsubs (); ++ default: ++ break; ++ } ++# endif /* HAVE_DEV_FD */ + #endif + + /* Invert the return value if we have to */ +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_ */ \ No newline at end of file diff --git a/bash.spec b/bash.spec index f3e1d61f3a0b7054a052d1351ad93efc3a5fa803..3be201befca7190472a148acccb9d1e6478f4d10 100644 --- a/bash.spec +++ b/bash.spec @@ -22,21 +22,28 @@ Patch8: bash-5.0-patch8.patch Patch9: bash-5.0-patch9.patch Patch10: bash-5.0-patch10.patch Patch11: bash-5.0-patch11.patch +Patch12: bash-5.0-patch12.patch +Patch13: bash-5.0-patch13.patch +Patch14: bash-5.0-patch14.patch +Patch15: bash-5.0-patch15.patch +Patch16: bash-5.0-patch16.patch -Patch15: bash-2.05a-interpreter.patch -Patch18: bash-2.05b-pgrp_sync.patch -Patch25: bash-4.0-nobits.patch -Patch29: bash-4.2-coverity.patch + + +Patch115: bash-2.05a-interpreter.patch +Patch118: bash-2.05b-pgrp_sync.patch +Patch125: bash-4.0-nobits.patch +Patch129: bash-4.2-coverity.patch # rh1102815 -Patch33: bash-4.3-noecho.patch +Patch133: bash-4.3-noecho.patch # fix bash leaks memory when LC_ALL set-rh1241533,rh1224855 -Patch34: bash-4.3-memleak-lc_all.patch +Patch134: bash-4.3-memleak-lc_all.patch # https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=951bdaad7a18cc0dc1036bba86b18b90874d39ff -Patch35: CVE-2019-18276.patch +Patch135: CVE-2019-18276.patch # https://github.com/bminor/bash/commit/db26b1cf58aab63c39fd5665590cad3cb75eab72.patch -Patch36: commit-bash-20190913-snapshot.patch -Patch37:bugfix-Forbidden-non-root-user-to-clear-history.patch -Patch38:enable-dot-logout-and-source-bashrc-through-ssh.patch +Patch136: commit-bash-20190913-snapshot.patch +Patch137:bugfix-Forbidden-non-root-user-to-clear-history.patch +Patch138:enable-dot-logout-and-source-bashrc-through-ssh.patch BuildRequires: gcc bison texinfo autoconf ncurses-devel @@ -122,6 +129,13 @@ make check %{_mandir}/man1/*.gz %exclude %{_infodir}/dir +%changelog +* Wed April 8 2020 openEuler Buildteam - 5.0-13 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:add upstream patches + %changelog * Thu Mar 19 2020 openEuler Buildteam - 5.0-12 - Type:enhancement