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