vanhofen
7 years ago
11 changed files with 758 additions and 0 deletions
@ -0,0 +1,43 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-013 |
|||
|
|||
Bug-Reported-by: Siteshwar Vashisht <svashisht@redhat.com> |
|||
Bug-Reference-ID: <1508861265.9523642.1484659442561.JavaMail.zimbra@redhat.com> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-01/msg00026.html |
|||
|
|||
Bug-Description: |
|||
|
|||
If a here-document contains a command substitution, the command substitution |
|||
can get access to the file descriptor used to write the here-document. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-4.4-patched/redir.c 2016-06-02 20:22:24.000000000 -0400 |
|||
--- redir.c 2017-01-17 13:23:40.000000000 -0500 |
|||
*************** |
|||
*** 470,473 **** |
|||
--- 467,472 ---- |
|||
} |
|||
|
|||
+ SET_CLOSE_ON_EXEC (fd); |
|||
+ |
|||
errno = r = 0; /* XXX */ |
|||
/* write_here_document returns 0 on success, errno on failure. */ |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 12 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 13 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,104 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-014 |
|||
|
|||
Bug-Reported-by: Oyvind Hvidsten <oyvind.hvidsten@dhampir.no> |
|||
Bug-Reference-ID: <c01b7049-925c-9409-d978-e59bf42591f4@dhampir.no> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-12/msg00023.html |
|||
|
|||
Bug-Description: |
|||
|
|||
Under some circumstances, functions that return via the `return' builtin do |
|||
not clean up memory they allocated to keep track of FIFOs. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-20171205/execute_cmd.c 2017-12-08 07:38:28.000000000 -0500 |
|||
--- execute_cmd.c 2018-01-26 15:23:38.000000000 -0500 |
|||
*************** |
|||
*** 727,730 **** |
|||
--- 727,732 ---- |
|||
ofifo = num_fifos (); |
|||
ofifo_list = copy_fifo_list ((int *)&osize); |
|||
+ begin_unwind_frame ("internal_fifos"); |
|||
+ add_unwind_protect (xfree, ofifo_list); |
|||
saved_fifo = 1; |
|||
} |
|||
*************** |
|||
*** 742,746 **** |
|||
#if defined (PROCESS_SUBSTITUTION) |
|||
if (saved_fifo) |
|||
! free ((void *)ofifo_list); |
|||
#endif |
|||
return (last_command_exit_value = EXECUTION_FAILURE); |
|||
--- 744,751 ---- |
|||
#if defined (PROCESS_SUBSTITUTION) |
|||
if (saved_fifo) |
|||
! { |
|||
! free ((void *)ofifo_list); |
|||
! discard_unwind_frame ("internal_fifos"); |
|||
! } |
|||
#endif |
|||
return (last_command_exit_value = EXECUTION_FAILURE); |
|||
*************** |
|||
*** 1061,1064 **** |
|||
--- 1066,1070 ---- |
|||
close_new_fifos ((char *)ofifo_list, osize); |
|||
free ((void *)ofifo_list); |
|||
+ discard_unwind_frame ("internal_fifos"); |
|||
} |
|||
#endif |
|||
*************** |
|||
*** 4978,4984 **** |
|||
#endif |
|||
|
|||
! #if defined (PROCESS_SUBSTITUTION) |
|||
ofifo = num_fifos (); |
|||
ofifo_list = copy_fifo_list (&osize); |
|||
#endif |
|||
|
|||
--- 4984,4995 ---- |
|||
#endif |
|||
|
|||
! #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 |
|||
|
|||
*************** |
|||
*** 5064,5068 **** |
|||
if (nfifo > ofifo) |
|||
close_new_fifos (ofifo_list, osize); |
|||
! free (ofifo_list); |
|||
#endif |
|||
|
|||
--- 5075,5081 ---- |
|||
if (nfifo > ofifo) |
|||
close_new_fifos (ofifo_list, osize); |
|||
! if (ofifo_list) |
|||
! free (ofifo_list); |
|||
! discard_unwind_frame ("saved_fifos"); |
|||
#endif |
|||
|
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 13 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 14 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,43 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-015 |
|||
|
|||
Bug-Reported-by: David Simmons <bug-bash@tmp.davidsimmons.com> |
|||
Bug-Reference-ID: <bc6f0839-fa50-fe8f-65f5-5aa6feb11ec5@davidsimmons.com> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00033.html |
|||
|
|||
Bug-Description: |
|||
|
|||
Process substitution can leak internal quoting to the parser in the invoked |
|||
subshell. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-20170210/subst.c 2017-01-19 11:08:50.000000000 -0500 |
|||
--- subst.c 2017-02-20 10:12:49.000000000 -0500 |
|||
*************** |
|||
*** 5907,5910 **** |
|||
--- 5907,5912 ---- |
|||
expanding_redir = 0; |
|||
|
|||
+ remove_quoted_escapes (string); |
|||
+ |
|||
subshell_level++; |
|||
result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 14 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 15 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,78 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-016 |
|||
|
|||
Bug-Reported-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> |
|||
Bug-Reference-ID: <CAJq09z7G1-QnLyiUQA0DS=V3da_rtHF8VdYbbdzPe_W3kydpRg@mail.gmail.com> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00092.html |
|||
|
|||
Bug-Description: |
|||
|
|||
Bash can perform trap processing while reading command substitution output |
|||
instead of waiting until the command completes. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-4.4/lib/sh/zread.c 2014-12-22 10:48:04.000000000 -0500 |
|||
--- lib/sh/zread.c 2016-09-29 15:21:36.000000000 -0400 |
|||
*************** |
|||
*** 38,42 **** |
|||
--- 38,45 ---- |
|||
#endif |
|||
|
|||
+ extern int executing_builtin; |
|||
+ |
|||
extern void check_signals_and_traps (void); |
|||
+ extern void check_signals (void); |
|||
extern int signal_is_trapped (int); |
|||
|
|||
*************** |
|||
*** 51,69 **** |
|||
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 |
|||
|
|||
return r; |
|||
--- 54,64 ---- |
|||
ssize_t r; |
|||
|
|||
while ((r = read (fd, buf, len)) < 0 && errno == EINTR) |
|||
! /* 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; |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 15 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 16 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,45 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-017 |
|||
|
|||
Bug-Reported-by: ZhangXiao <xiao.zhang@windriver.com> |
|||
Bug-Reference-ID: <58AD3EAC.4020608@windriver.com> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00061.html |
|||
|
|||
Bug-Description: |
|||
|
|||
There is a memory leak when `read -e' is used to read a line using readline. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-20170217/builtins/read.def 2017-01-02 16:53:02.000000000 -0500 |
|||
--- builtins/read.def 2017-02-22 09:43:14.000000000 -0500 |
|||
*************** |
|||
*** 691,694 **** |
|||
--- 691,699 ---- |
|||
CHECK_ALRM; |
|||
|
|||
+ #if defined (READLINE) |
|||
+ if (edit) |
|||
+ free (rlbuf); |
|||
+ #endif |
|||
+ |
|||
if (retval < 0) |
|||
{ |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 16 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 17 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,48 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-018 |
|||
|
|||
Bug-Reported-by: Siteshwar Vashisht <svashisht@redhat.com> |
|||
Bug-Reference-ID: <1341922391.30876471.1501250355579.JavaMail.zimbra@redhat.com> |
|||
Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=1466737 |
|||
|
|||
Bug-Description: |
|||
|
|||
Under certain circumstances (e.g., reading from /dev/zero), read(2) will not |
|||
return -1 even when interrupted by a signal. The read builtin needs to check |
|||
for signals in this case. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-20170622/builtins/read.def 2017-06-17 18:45:20.000000000 -0400 |
|||
--- builtins/read.def 2017-06-30 11:09:26.000000000 -0400 |
|||
*************** |
|||
*** 611,615 **** |
|||
|
|||
CHECK_ALRM; |
|||
! |
|||
#if defined (READLINE) |
|||
} |
|||
--- 611,615 ---- |
|||
|
|||
CHECK_ALRM; |
|||
! QUIT; /* in case we didn't call check_signals() */ |
|||
#if defined (READLINE) |
|||
} |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 17 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 18 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,50 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-019 |
|||
|
|||
Bug-Reported-by: Kieran Grant <kieran.thehacker.grant@gmail.com> |
|||
Bug-Reference-ID: <ec9071ae-efb1-9e09-5d03-e905daf2835c@gmail.com> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2018-02/msg00002.html |
|||
|
|||
Bug-Description: |
|||
|
|||
With certain values for PS1, especially those that wrap onto three or more |
|||
lines, readline will miscalculate the number of invisible characters, |
|||
leading to crashes and core dumps. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-4.4.18/lib/readline/display.c 2016-07-28 14:49:33.000000000 -0400 |
|||
--- lib/readline/display.c 2018-02-03 19:19:35.000000000 -0500 |
|||
*************** |
|||
*** 772,776 **** |
|||
wadjust = (newlines == 0) |
|||
? prompt_invis_chars_first_line |
|||
! : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line); |
|||
|
|||
/* fix from Darin Johnson <darin@acuson.com> for prompt string with |
|||
--- 788,794 ---- |
|||
wadjust = (newlines == 0) |
|||
? prompt_invis_chars_first_line |
|||
! : ((newlines == prompt_lines_estimate) |
|||
! ? (wrap_offset - prompt_invis_chars_first_line) |
|||
! : 0); |
|||
|
|||
/* fix from Darin Johnson <darin@acuson.com> for prompt string with |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 18 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 19 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,177 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-020 |
|||
|
|||
Bug-Reported-by: Graham Northup <northug@clarkson.edu> |
|||
Bug-Reference-ID: <537530c3-61f0-349b-9de6-fa4e2487f428@clarkson.edu> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00025.html |
|||
|
|||
Bug-Description: |
|||
|
|||
In circumstances involving long-running scripts that create and reap many |
|||
processes, it is possible for the hash table bash uses to store exit |
|||
statuses from asynchronous processes to develop loops. This patch fixes |
|||
the loop causes and adds code to detect any future loops. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-4.4-patched/jobs.c 2016-11-11 13:42:55.000000000 -0500 |
|||
--- jobs.c 2017-02-22 15:16:28.000000000 -0500 |
|||
*************** |
|||
*** 813,818 **** |
|||
struct pidstat *ps; |
|||
|
|||
! bucket = pshash_getbucket (pid); |
|||
! psi = bgp_getindex (); |
|||
ps = &bgpids.storage[psi]; |
|||
|
|||
--- 796,815 ---- |
|||
struct pidstat *ps; |
|||
|
|||
! /* 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]; |
|||
|
|||
*************** |
|||
*** 842,845 **** |
|||
--- 839,843 ---- |
|||
{ |
|||
struct pidstat *ps; |
|||
+ ps_index_t *bucket; |
|||
|
|||
ps = &bgpids.storage[psi]; |
|||
*************** |
|||
*** 847,856 **** |
|||
return; |
|||
|
|||
! if (ps->bucket_next != NO_PID) |
|||
bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; |
|||
! if (ps->bucket_prev != NO_PID) |
|||
bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; |
|||
else |
|||
! *(pshash_getbucket (ps->pid)) = ps->bucket_next; |
|||
} |
|||
|
|||
--- 845,861 ---- |
|||
return; |
|||
|
|||
! if (ps->bucket_next != NO_PIDSTAT) |
|||
bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; |
|||
! if (ps->bucket_prev != NO_PIDSTAT) |
|||
bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; |
|||
else |
|||
! { |
|||
! 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; |
|||
} |
|||
|
|||
*************** |
|||
*** 859,863 **** |
|||
pid_t pid; |
|||
{ |
|||
! ps_index_t psi; |
|||
|
|||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) |
|||
--- 864,868 ---- |
|||
pid_t pid; |
|||
{ |
|||
! ps_index_t psi, orig_psi; |
|||
|
|||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) |
|||
*************** |
|||
*** 865,871 **** |
|||
|
|||
/* 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; |
|||
|
|||
if (psi == NO_PIDSTAT) |
|||
--- 870,883 ---- |
|||
|
|||
/* Search chain using hash to find bucket in pidstat_table */ |
|||
! 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) |
|||
*************** |
|||
*** 905,909 **** |
|||
pid_t pid; |
|||
{ |
|||
! ps_index_t psi; |
|||
|
|||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) |
|||
--- 917,921 ---- |
|||
pid_t pid; |
|||
{ |
|||
! ps_index_t psi, orig_psi; |
|||
|
|||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) |
|||
*************** |
|||
*** 911,917 **** |
|||
|
|||
/* 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); |
|||
|
|||
return -1; |
|||
--- 923,936 ---- |
|||
|
|||
/* Search chain using hash to find bucket in pidstat_table */ |
|||
! 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; |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 19 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 20 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,57 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-021 |
|||
|
|||
Bug-Reported-by: werner@suse.de |
|||
Bug-Reference-ID: <201803281402.w2SE2VOa000476@noether.suse.de> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2018-03/msg00196.html |
|||
|
|||
Bug-Description: |
|||
|
|||
A SIGINT received inside a SIGINT trap handler can possibly cause the |
|||
shell to loop. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-20180329/jobs.c 2018-02-11 18:07:22.000000000 -0500 |
|||
--- jobs.c 2018-04-02 14:24:21.000000000 -0400 |
|||
*************** |
|||
*** 2690,2694 **** |
|||
if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) |
|||
{ |
|||
! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); |
|||
waiting_for_child = 0; |
|||
if (old_sigint_handler == SIG_IGN) |
|||
--- 2690,2704 ---- |
|||
if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) |
|||
{ |
|||
! 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) |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 20 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 21 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,61 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-022 |
|||
|
|||
Bug-Reported-by: Nuzhna Pomoshch <nuzhna_pomoshch@yahoo.com> |
|||
Bug-Reference-ID: <1317167476.1492079.1495999776464@mail.yahoo.com> |
|||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2017-05/msg00005.html |
|||
|
|||
Bug-Description: |
|||
|
|||
There are cases where a failing readline command (e.g., delete-char at the end |
|||
of a line) can cause a multi-character key sequence to `back up' and attempt |
|||
to re-read some of the characters in the sequence. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-4.4-patched/lib/readline/readline.c 2016-04-20 15:53:52.000000000 -0400 |
|||
--- lib/readline/readline.c 2018-05-26 17:19:00.000000000 -0400 |
|||
*************** |
|||
*** 1058,1062 **** |
|||
r = _rl_dispatch (ANYOTHERKEY, m); |
|||
} |
|||
! else if (r && map[ANYOTHERKEY].function) |
|||
{ |
|||
/* We didn't match (r is probably -1), so return something to |
|||
--- 1056,1060 ---- |
|||
r = _rl_dispatch (ANYOTHERKEY, m); |
|||
} |
|||
! else if (r < 0 && map[ANYOTHERKEY].function) |
|||
{ |
|||
/* We didn't match (r is probably -1), so return something to |
|||
*************** |
|||
*** 1070,1074 **** |
|||
return -2; |
|||
} |
|||
! else if (r && got_subseq) |
|||
{ |
|||
/* OK, back up the chain. */ |
|||
--- 1068,1072 ---- |
|||
return -2; |
|||
} |
|||
! else if (r < 0 && got_subseq) /* XXX */ |
|||
{ |
|||
/* OK, back up the chain. */ |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 21 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 22 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,52 @@ |
|||
BASH PATCH REPORT |
|||
================= |
|||
|
|||
Bash-Release: 4.4 |
|||
Patch-ID: bash44-023 |
|||
|
|||
Bug-Reported-by: Martijn Dekker <martijn@inlv.org> |
|||
Bug-Reference-ID: <5326d6b9-2625-1d32-3e6e-ad1d15462c09@inlv.org> |
|||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00041.html |
|||
|
|||
Bug-Description: |
|||
|
|||
When sourcing a file from an interactive shell, setting the SIGINT handler |
|||
to the default and typing ^C will cause the shell to exit. |
|||
|
|||
Patch (apply with `patch -p0'): |
|||
|
|||
*** ../bash-4.4-patched/builtins/trap.def 2016-01-25 13:32:38.000000000 -0500 |
|||
--- builtins/trap.def 2016-11-06 12:04:35.000000000 -0500 |
|||
*************** |
|||
*** 99,102 **** |
|||
--- 99,103 ---- |
|||
|
|||
extern int posixly_correct, subshell_environment; |
|||
+ extern int sourcelevel, running_trap; |
|||
|
|||
int |
|||
*************** |
|||
*** 213,216 **** |
|||
--- 214,220 ---- |
|||
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); |
|||
*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
|||
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
|||
*************** |
|||
*** 26,30 **** |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 22 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
|||
--- 26,30 ---- |
|||
looks for to find the patch level (for the sccs version string). */ |
|||
|
|||
! #define PATCHLEVEL 23 |
|||
|
|||
#endif /* _PATCHLEVEL_H_ */ |
Loading…
Reference in new issue