diff options
Diffstat (limited to 'source/a/bash/bash-5.0-patches/bash50-017')
-rw-r--r-- | source/a/bash/bash-5.0-patches/bash50-017 | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/source/a/bash/bash-5.0-patches/bash50-017 b/source/a/bash/bash-5.0-patches/bash50-017 deleted file mode 100644 index adfcb6a86..000000000 --- a/source/a/bash/bash-5.0-patches/bash50-017 +++ /dev/null @@ -1,289 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 5.0 -Patch-ID: bash50-017 - -Bug-Reported-by: Valentin Lab <valentin.lab@kalysto.org> -Bug-Reference-ID: <ab981b9c-60a5-46d0-b7e6-a6d88b80df50@kalysto.org> -Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-03/msg00062.html - -Bug-Description: - -There were cases where patch 16 reaped process substitution file descriptors -(or FIFOs) and processes to early. This is a better fix for the problem that -bash50-016 attempted to solve. - -Patch (apply with `patch -p0'): - -*** ../bash-5.0-patched/subst.c 2019-08-29 11:16:49.000000000 -0400 ---- subst.c 2020-04-02 16:24:19.000000000 -0400 -*************** -*** 5337,5341 **** - } - -! char * - copy_fifo_list (sizep) - int *sizep; ---- 5337,5341 ---- - } - -! void * - copy_fifo_list (sizep) - int *sizep; -*************** -*** 5343,5347 **** - if (sizep) - *sizep = 0; -! return (char *)NULL; - } - ---- 5343,5347 ---- - if (sizep) - *sizep = 0; -! return (void *)NULL; - } - -*************** -*** 5409,5414 **** - if (fifo_list[i].file) - { -! fifo_list[j].file = fifo_list[i].file; -! fifo_list[j].proc = fifo_list[i].proc; - j++; - } ---- 5409,5419 ---- - if (fifo_list[i].file) - { -! if (i != j) -! { -! fifo_list[j].file = fifo_list[i].file; -! fifo_list[j].proc = fifo_list[i].proc; -! fifo_list[i].file = (char *)NULL; -! fifo_list[i].proc = 0; -! } - j++; - } -*************** -*** 5426,5433 **** - void - close_new_fifos (list, lsize) -! char *list; - int lsize; - { - int i; - - if (list == 0) ---- 5431,5439 ---- - void - close_new_fifos (list, lsize) -! void *list; - int lsize; - { - int i; -+ char *plist; - - if (list == 0) -*************** -*** 5437,5442 **** - } - -! for (i = 0; i < lsize; i++) -! if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) - unlink_fifo (i); - ---- 5443,5448 ---- - } - -! for (plist = (char *)list, i = 0; i < lsize; i++) -! if (plist[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) - unlink_fifo (i); - -*************** -*** 5560,5568 **** - } - -! char * - copy_fifo_list (sizep) - int *sizep; - { -! char *ret; - - if (nfds == 0 || totfds == 0) ---- 5566,5574 ---- - } - -! void * - copy_fifo_list (sizep) - int *sizep; - { -! void *ret; - - if (nfds == 0 || totfds == 0) -*************** -*** 5570,5579 **** - if (sizep) - *sizep = 0; -! return (char *)NULL; - } - - if (sizep) - *sizep = totfds; -! ret = (char *)xmalloc (totfds * sizeof (pid_t)); - return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); - } ---- 5576,5585 ---- - if (sizep) - *sizep = 0; -! return (void *)NULL; - } - - if (sizep) - *sizep = totfds; -! ret = xmalloc (totfds * sizeof (pid_t)); - return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); - } -*************** -*** 5648,5655 **** - void - close_new_fifos (list, lsize) -! char *list; - int lsize; - { - int i; - - if (list == 0) ---- 5654,5662 ---- - void - close_new_fifos (list, lsize) -! void *list; - int lsize; - { - int i; -+ pid_t *plist; - - if (list == 0) -*************** -*** 5659,5664 **** - } - -! for (i = 0; i < lsize; i++) -! if (list[i] == 0 && i < totfds && dev_fd_list[i]) - unlink_fifo (i); - ---- 5666,5671 ---- - } - -! for (plist = (pid_t *)list, i = 0; i < lsize; i++) -! if (plist[i] == 0 && i < totfds && dev_fd_list[i]) - unlink_fifo (i); - -*** ../bash-5.0-patched/subst.h 2018-10-21 18:46:09.000000000 -0400 ---- subst.h 2020-04-02 16:29:28.000000000 -0400 -*************** -*** 274,280 **** - extern void unlink_fifo __P((int)); - -! extern char *copy_fifo_list __P((int *)); -! extern void unlink_new_fifos __P((char *, int)); -! extern void close_new_fifos __P((char *, int)); - - extern void clear_fifo_list __P((void)); ---- 274,279 ---- - extern void unlink_fifo __P((int)); - -! extern void *copy_fifo_list __P((int *)); -! extern void close_new_fifos __P((void *, int)); - - extern void clear_fifo_list __P((void)); -*** ../bash-5.0-patched/execute_cmd.c 2020-02-06 20:16:48.000000000 -0500 ---- execute_cmd.c 2020-04-02 17:00:10.000000000 -0400 -*************** -*** 565,569 **** - #if defined (PROCESS_SUBSTITUTION) - volatile int ofifo, nfifo, osize, saved_fifo; -! volatile char *ofifo_list; - #endif - ---- 565,569 ---- - #if defined (PROCESS_SUBSTITUTION) - volatile int ofifo, nfifo, osize, saved_fifo; -! volatile void *ofifo_list; - #endif - -*************** -*** 751,760 **** - # endif - -! if (variable_context != 0) /* XXX - also if sourcelevel != 0? */ - { - ofifo = num_fifos (); - ofifo_list = copy_fifo_list ((int *)&osize); - begin_unwind_frame ("internal_fifos"); -! add_unwind_protect (xfree, ofifo_list); - saved_fifo = 1; - } ---- 751,762 ---- - # endif - -! /* XXX - also if sourcelevel != 0? */ -! if (variable_context != 0) - { - ofifo = num_fifos (); - ofifo_list = copy_fifo_list ((int *)&osize); - begin_unwind_frame ("internal_fifos"); -! if (ofifo_list) -! add_unwind_protect (xfree, ofifo_list); - saved_fifo = 1; - } -*************** -*** 1100,1123 **** - nfifo = num_fifos (); - if (nfifo > ofifo) -! close_new_fifos ((char *)ofifo_list, osize); - 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 - ---- 1102,1109 ---- - nfifo = num_fifos (); - if (nfifo > ofifo) -! close_new_fifos ((void *)ofifo_list, osize); - free ((void *)ofifo_list); - discard_unwind_frame ("internal_fifos"); - } - #endif - - -*** ../bash-5.0/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_ */ |