123 lines
2.6 KiB
Diff
123 lines
2.6 KiB
Diff
BASH PATCH REPORT
|
|
=================
|
|
|
|
Bash-Release: 5.3
|
|
Patch-ID: bash53-002
|
|
|
|
Bug-Reported-by:
|
|
Bug-Reference-ID:
|
|
Bug-Reference-URL: https://savannah.gnu.org/bugs/?67326
|
|
|
|
Bug-Description:
|
|
|
|
There are too many differences in the various implementations of shm_open(2)
|
|
to rely on it for bash's use.
|
|
|
|
Patch (apply with `patch -p0'):
|
|
|
|
*** ../bash-5.3-patched/lib/sh/anonfile.c Tue Jul 9 11:41:57 2024
|
|
--- lib/sh/anonfile.c Thu Jul 17 11:03:23 2025
|
|
***************
|
|
*** 26,30 ****
|
|
#include <bashtypes.h>
|
|
|
|
! #if defined (HAVE_MEMFD_CREATE) || defined (HAVE_SHM_OPEN) || defined (HAVE_SHM_MKSTEMP)
|
|
# include <sys/mman.h>
|
|
#endif
|
|
--- 26,30 ----
|
|
#include <bashtypes.h>
|
|
|
|
! #if defined (HAVE_MEMFD_CREATE) || defined (HAVE_SHM_MKSTEMP)
|
|
# include <sys/mman.h>
|
|
#endif
|
|
***************
|
|
*** 42,57 ****
|
|
#endif
|
|
|
|
! #if defined (HAVE_SHM_OPEN)
|
|
! #ifndef O_NOFOLLOW
|
|
! # define O_NOFOLLOW 0
|
|
! #endif
|
|
!
|
|
static int
|
|
- anonshmunlink (const char *fn)
|
|
- {
|
|
- return (shm_unlink (fn));
|
|
- }
|
|
-
|
|
- static int
|
|
anonshmopen (const char *name, int flags, char **fn)
|
|
{
|
|
--- 42,47 ----
|
|
#endif
|
|
|
|
! #if defined (HAVE_SHM_MKSTEMP)
|
|
static int
|
|
anonshmopen (const char *name, int flags, char **fn)
|
|
{
|
|
***************
|
|
*** 63,95 ****
|
|
*fn = 0;
|
|
|
|
- #if defined (HAVE_SHM_MKSTEMP)
|
|
fname = savestring ("/shm-XXXXXXXXXX");
|
|
fd = shm_mkstemp (fname);
|
|
if (fd < 0)
|
|
- free (fname);
|
|
- #endif
|
|
-
|
|
- if (fd < 0)
|
|
{
|
|
- fname = sh_mktmpname (name, flags);
|
|
- fd = shm_open (fname, O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, 0600);
|
|
- }
|
|
-
|
|
- if (fd < 0)
|
|
- {
|
|
free (fname);
|
|
return fd;
|
|
}
|
|
|
|
- if (shm_unlink (fname) < 0)
|
|
- {
|
|
- int o;
|
|
- o = errno;
|
|
- free (fname);
|
|
- close (fd);
|
|
- errno = o;
|
|
- return -1;
|
|
- }
|
|
-
|
|
if (fn)
|
|
*fn = fname;
|
|
--- 53,64 ----
|
|
***************
|
|
*** 123,127 ****
|
|
flag = (name && *name == '/') ? MT_TEMPLATE : MT_USETMPDIR;
|
|
|
|
! #if defined (HAVE_SHM_OPEN)
|
|
fd = anonshmopen (name, flag, fn);
|
|
if (fd >= 0)
|
|
--- 92,96 ----
|
|
flag = (name && *name == '/') ? MT_TEMPLATE : MT_USETMPDIR;
|
|
|
|
! #if defined (HAVE_SHM_MKSTEMP)
|
|
fd = anonshmopen (name, flag, fn);
|
|
if (fd >= 0)
|
|
|
|
*** ../bash-5.3/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
|
|
--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
|
|
***************
|
|
*** 26,30 ****
|
|
looks for to find the patch level (for the sccs version string). */
|
|
|
|
! #define PATCHLEVEL 1
|
|
|
|
#endif /* _PATCHLEVEL_H_ */
|
|
--- 26,30 ----
|
|
looks for to find the patch level (for the sccs version string). */
|
|
|
|
! #define PATCHLEVEL 2
|
|
|
|
#endif /* _PATCHLEVEL_H_ */
|