summaryrefslogtreecommitdiff
path: root/source/a/bash
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2020-04-24 18:54:41 +0000
committerEric Hameleers <alien@slackware.com>2020-04-25 08:59:53 +0200
commitfc0b7eb5cb49c356c545c934504f9e6b6fe37bc6 (patch)
tree8242f15a26950f9f8a98c35d0cc6a758ac5b30e5 /source/a/bash
parentbf29f9a870281df42f1c50664c2cabd208d753d0 (diff)
downloadcurrent-fc0b7eb5cb49c356c545c934504f9e6b6fe37bc6.tar.gz
Fri Apr 24 18:54:41 UTC 202020200424185441
a/bash-5.0.017-x86_64-1.txz: Upgraded. a/kernel-generic-5.4.35-x86_64-1.txz: Upgraded. a/kernel-huge-5.4.35-x86_64-1.txz: Upgraded. a/kernel-modules-5.4.35-x86_64-1.txz: Upgraded. a/mcelog-169-x86_64-1.txz: Upgraded. ap/nvme-cli-1.11.1-x86_64-1.txz: Upgraded. ap/powertop-2.12-x86_64-1.txz: Upgraded. ap/tmux-3.1-x86_64-1.txz: Upgraded. d/kernel-headers-5.4.35-x86-1.txz: Upgraded. d/parallel-20200422-noarch-1.txz: Upgraded. d/rust-1.43.0-x86_64-1.txz: Upgraded. d/vala-0.48.5-x86_64-1.txz: Upgraded. k/kernel-source-5.4.35-noarch-1.txz: Upgraded. l/gmm-5.4-noarch-1.txz: Upgraded. l/librsvg-2.48.4-x86_64-1.txz: Upgraded. l/sip-4.19.22-x86_64-1.txz: Upgraded. n/dhcpcd-8.1.9-x86_64-1.txz: Upgraded. x/mesa-20.0.5-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
Diffstat (limited to 'source/a/bash')
-rw-r--r--source/a/bash/bash-5.0-patches/bash50-017289
1 files changed, 289 insertions, 0 deletions
diff --git a/source/a/bash/bash-5.0-patches/bash50-017 b/source/a/bash/bash-5.0-patches/bash50-017
new file mode 100644
index 00000000..adfcb6a8
--- /dev/null
+++ b/source/a/bash/bash-5.0-patches/bash50-017
@@ -0,0 +1,289 @@
+ 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_ */