]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/bash/bash50-017
Merge branch 'next'
[ipfire-2.x.git] / src / patches / bash / bash50-017
diff --git a/src/patches/bash/bash50-017 b/src/patches/bash/bash50-017
deleted file mode 100644 (file)
index adfcb6a..0000000
+++ /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_ */