Add official patch bash50-017
OBS-URL: https://build.opensuse.org/package/show/Base:System/bash?expand=0&rev=312
This commit is contained in:
parent
f3053694c4
commit
001e6e2140
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:cfe5d600bc3c6166e5a781059825ae43a47d382494904996daa3e43691bdd6ae
|
oid sha256:8c836e86b07a8fe59984c8e8cd31cd416e3763b7699ba8e7425aea5e7e23d804
|
||||||
size 11531
|
size 12816
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat May 9 07:03:45 UTC 2020 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Add official patch bash50-017
|
||||||
|
* 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.
|
||||||
|
- Remove temporary patch bash50-fix-016-close-new-fifos.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Apr 19 08:03:03 UTC 2020 - Thorsten Kukuk <kukuk@suse.com>
|
Sun Apr 19 08:03:03 UTC 2020 - Thorsten Kukuk <kukuk@suse.com>
|
||||||
|
|
||||||
|
@ -1,255 +0,0 @@
|
|||||||
*** ../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
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user