First check in
This commit is contained in:
84
Makefile
Normal file
84
Makefile
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# This file is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License version 2 as
|
||||||
|
# published by the Free Software Foundation here:
|
||||||
|
# (http://www.gnu.org/licenses/gpl-2.0.html)
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
DEPENDS =
|
||||||
|
ARCH = x86_64
|
||||||
|
URL = http://www.gnu.org/software/bash/
|
||||||
|
DESC = Bash is the GNU Project\'s shell
|
||||||
|
SNAPVER = sr0
|
||||||
|
|
||||||
|
ARCHIVE := $(PWD)/SRC/$(shell ls SRC|egrep '(bz2|gz|tar|xz)$$'|tail -1)
|
||||||
|
TYPE := $(shell file -ib $(ARCHIVE)|cut -d';' -f1|tr -d '\n')
|
||||||
|
SRCDIR := $(shell tar -tf $(ARCHIVE)|head -1|sed 's/\/.*//')
|
||||||
|
PATCHDIR := $(PWD)/SRC/patches
|
||||||
|
VERSION := $(shell echo $(SRCDIR)|egrep -o '\-[0-9].*'|sed 's/^-//')$(SNAPVER)
|
||||||
|
|
||||||
|
MAKE = make
|
||||||
|
MAKEINST = make install
|
||||||
|
SNAPHACKS = @if [ ! -f $(ROOT)/bin/sh ]; then \
|
||||||
|
ln -sv bash $(ROOT)/bin/sh; fi
|
||||||
|
|
||||||
|
include /usr/share/snap/Makefile.snaplinux
|
||||||
|
|
||||||
|
$(SRCDIR)/configure: $(ARCHIVE)
|
||||||
|
@if [ '$(TYPE)' == 'application/x-bzip2' ]; then \
|
||||||
|
tar -jxf $(ARCHIVE); \
|
||||||
|
elif [ '$(TYPE)' == 'application/x-gzip' ]; then \
|
||||||
|
tar -zxf $(ARCHIVE); \
|
||||||
|
elif [ '$(TYPE)' == 'application/x-tar' ]; then \
|
||||||
|
tar -xf $(ARCHIVE); \
|
||||||
|
elif [ '$(TYPE)' == 'application/x-xz' ]; then \
|
||||||
|
tar -xf $(ARCHIVE); \
|
||||||
|
else \
|
||||||
|
echo 'Unable to determine archive type'; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(SRCDIR)/config.log: $(SRCDIR)/configure
|
||||||
|
@cd $(SRCDIR) && for patch in $(PATCHDIR)/*.patch; do \
|
||||||
|
patch --verbose -Np0 -i $$patch; \
|
||||||
|
done
|
||||||
|
@cd $(SRCDIR); \
|
||||||
|
./configure \
|
||||||
|
--prefix=/usr \
|
||||||
|
--bindir=/bin \
|
||||||
|
--without-bash-malloc \
|
||||||
|
--with-installed-readline \
|
||||||
|
--build=x86_64-snap-linux-gnu \
|
||||||
|
--host=x86_64-snap-linux-gnu \
|
||||||
|
--target=x86_64-snap-linux-gnu
|
||||||
|
|
||||||
|
$(SRCDIR)/bash: $(SRCDIR)/config.log
|
||||||
|
@cd $(SRCDIR); \
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
$(ROOT): $(SRCDIR)/bash
|
||||||
|
@if [ -d $(ROOT) ]; then \
|
||||||
|
touch $(ROOT); \
|
||||||
|
else \
|
||||||
|
mkdir -v $(ROOT); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
@cd $(SRCDIR); \
|
||||||
|
$(MAKEINST) DESTDIR=$(ROOT)
|
||||||
|
|
||||||
|
@$(SNAPHACKS)
|
||||||
|
|
||||||
|
test: $(ROOT)
|
||||||
|
@cd $(SRCDIR); \
|
||||||
|
make tests
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@rm -rvf $(ROOT) \
|
||||||
|
$(SNAPINFO) \
|
||||||
|
$(MANIFEST) \
|
||||||
|
$(FILES) \
|
||||||
|
$(SRCDIR)
|
||||||
|
|
||||||
3
SNAP/README
Normal file
3
SNAP/README
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
This is the directory where the manifest, snapinfo, and files.tar.gz
|
||||||
|
files will be created. It is also where the usher file should be
|
||||||
|
placed if it is required by the package.
|
||||||
BIN
SRC/bash-4.3.30.tar.gz
Normal file
BIN
SRC/bash-4.3.30.tar.gz
Normal file
Binary file not shown.
BIN
SRC/bash-4.3.30.tar.gz.sig
Normal file
BIN
SRC/bash-4.3.30.tar.gz.sig
Normal file
Binary file not shown.
2
SRC/patches/README
Normal file
2
SRC/patches/README
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Place any patch files here and preface each with a number indicating
|
||||||
|
the order of execution. Patch files are expected to use a .patch extension.
|
||||||
112
SRC/patches/bash43-031.patch
Normal file
112
SRC/patches/bash43-031.patch
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-031
|
||||||
|
|
||||||
|
Bug-Reported-by: lolilolicon <lolilolicon@gmail.com>
|
||||||
|
Bug-Reference-ID: <CAMtVo_Nz=32Oq=zWTb6=+8gUNXOo2rRvud1W4oPnA-cgVk_ZqQ@mail.gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
The new nameref assignment functionality introduced in bash-4.3 did not perform
|
||||||
|
enough validation on the variable value and would create variables with
|
||||||
|
invalid names.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500
|
||||||
|
--- subst.h 2014-09-01 12:16:56.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 48,51 ****
|
||||||
|
--- 48,52 ----
|
||||||
|
#define ASS_MKGLOBAL 0x0008 /* force global assignment */
|
||||||
|
#define ASS_NAMEREF 0x0010 /* assigning to nameref variable */
|
||||||
|
+ #define ASS_FROMREF 0x0020 /* assigning from value of nameref variable */
|
||||||
|
|
||||||
|
/* Flags for the string extraction functions. */
|
||||||
|
*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400
|
||||||
|
--- variables.c 2014-09-01 14:37:44.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 2504,2511 ****
|
||||||
|
int hflags, aflags;
|
||||||
|
{
|
||||||
|
! char *newval;
|
||||||
|
SHELL_VAR *entry;
|
||||||
|
|
||||||
|
entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
|
||||||
|
/* Follow the nameref chain here if this is the global variables table */
|
||||||
|
if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
|
||||||
|
--- 2566,2590 ----
|
||||||
|
int hflags, aflags;
|
||||||
|
{
|
||||||
|
! char *newname, *newval;
|
||||||
|
SHELL_VAR *entry;
|
||||||
|
+ #if defined (ARRAY_VARS)
|
||||||
|
+ arrayind_t ind;
|
||||||
|
+ char *subp;
|
||||||
|
+ int sublen;
|
||||||
|
+ #endif
|
||||||
|
|
||||||
|
+ newname = 0;
|
||||||
|
+ #if defined (ARRAY_VARS)
|
||||||
|
+ if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
|
||||||
|
+ {
|
||||||
|
+ newname = array_variable_name (name, &subp, &sublen);
|
||||||
|
+ if (newname == 0)
|
||||||
|
+ return (SHELL_VAR *)NULL; /* XXX */
|
||||||
|
+ entry = hash_lookup (newname, table);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ #endif
|
||||||
|
entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
|
||||||
|
+
|
||||||
|
/* Follow the nameref chain here if this is the global variables table */
|
||||||
|
if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
|
||||||
|
***************
|
||||||
|
*** 2538,2541 ****
|
||||||
|
--- 2617,2630 ----
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ #if defined (ARRAY_VARS)
|
||||||
|
+ else if (entry == 0 && newname)
|
||||||
|
+ {
|
||||||
|
+ entry = make_new_array_variable (newname); /* indexed array by default */
|
||||||
|
+ if (entry == 0)
|
||||||
|
+ return entry;
|
||||||
|
+ ind = array_expand_index (name, subp, sublen);
|
||||||
|
+ bind_array_element (entry, ind, value, aflags);
|
||||||
|
+ }
|
||||||
|
+ #endif
|
||||||
|
else if (entry == 0)
|
||||||
|
{
|
||||||
|
***************
|
||||||
|
*** 2658,2662 ****
|
||||||
|
if (nameref_cell (nv) == 0)
|
||||||
|
return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
|
||||||
|
! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
--- 2747,2752 ----
|
||||||
|
if (nameref_cell (nv) == 0)
|
||||||
|
return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
|
||||||
|
! /* XXX - bug here with ref=array[index] */
|
||||||
|
! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 30
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 31
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-031.sig
Normal file
BIN
SRC/patches/bash43-031.sig
Normal file
Binary file not shown.
51
SRC/patches/bash43-032.patch
Normal file
51
SRC/patches/bash43-032.patch
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-032
|
||||||
|
|
||||||
|
Bug-Reported-by: crispusfairbairn@gmail.com
|
||||||
|
Bug-Reference-ID: <b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
When bash is running in Posix mode, it allows signals -- including SIGCHLD --
|
||||||
|
to interrupt the `wait' builtin, as Posix requires. However, the interrupt
|
||||||
|
causes bash to not run a SIGCHLD trap for all exited children. This patch
|
||||||
|
fixes the issue and restores the documented behavior in Posix mode.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/jobs.c 2014-05-14 09:20:15.000000000 -0400
|
||||||
|
--- jobs.c 2014-09-09 11:50:38.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 3340,3344 ****
|
||||||
|
{
|
||||||
|
interrupt_immediately = 0;
|
||||||
|
! trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */
|
||||||
|
wait_signal_received = SIGCHLD;
|
||||||
|
/* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
|
||||||
|
--- 3346,3352 ----
|
||||||
|
{
|
||||||
|
interrupt_immediately = 0;
|
||||||
|
! /* This was trap_handler (SIGCHLD) but that can lose traps if
|
||||||
|
! children_exited > 1 */
|
||||||
|
! queue_sigchld_trap (children_exited);
|
||||||
|
wait_signal_received = SIGCHLD;
|
||||||
|
/* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 31
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 32
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-032.sig
Normal file
BIN
SRC/patches/bash43-032.sig
Normal file
Binary file not shown.
225
SRC/patches/bash43-033.patch
Normal file
225
SRC/patches/bash43-033.patch
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-033
|
||||||
|
|
||||||
|
Bug-Reported-by: mickael9@gmail.com, Jan Rome <jan.rome@gmail.com>
|
||||||
|
Bug-Reference-ID: <20140907224046.382ED3610CC@mickael-laptop.localdomain>,
|
||||||
|
<540D661D.50908@gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html
|
||||||
|
http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
Bash does not clean up the terminal state in all cases where bash or
|
||||||
|
readline modifies it and bash is subsequently terminated by a fatal signal.
|
||||||
|
This happens when the `read' builtin modifies the terminal settings, both
|
||||||
|
when readline is active and when it is not. It occurs most often when a script
|
||||||
|
installs a trap that exits on a signal without re-sending the signal to itself.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/shell.c 2014-01-14 08:04:32.000000000 -0500
|
||||||
|
--- shell.c 2014-12-22 10:27:50.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 74,77 ****
|
||||||
|
--- 74,78 ----
|
||||||
|
|
||||||
|
#if defined (READLINE)
|
||||||
|
+ # include <readline/readline.h>
|
||||||
|
# include "bashline.h"
|
||||||
|
#endif
|
||||||
|
***************
|
||||||
|
*** 910,913 ****
|
||||||
|
--- 912,923 ----
|
||||||
|
fflush (stderr);
|
||||||
|
|
||||||
|
+ /* Clean up the terminal if we are in a state where it's been modified. */
|
||||||
|
+ #if defined (READLINE)
|
||||||
|
+ if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
|
||||||
|
+ (*rl_deprep_term_function) ();
|
||||||
|
+ #endif
|
||||||
|
+ if (read_tty_modified ())
|
||||||
|
+ read_tty_cleanup ();
|
||||||
|
+
|
||||||
|
/* Do trap[0] if defined. Allow it to override the exit status
|
||||||
|
passed to us. */
|
||||||
|
*** ../bash-4.3-patched/builtins/read.def 2014-10-01 12:57:38.000000000 -0400
|
||||||
|
--- builtins/read.def 2014-12-22 10:48:54.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 141,148 ****
|
||||||
|
int sigalrm_seen;
|
||||||
|
|
||||||
|
! static int reading;
|
||||||
|
static SigHandler *old_alrm;
|
||||||
|
static unsigned char delim;
|
||||||
|
|
||||||
|
/* In all cases, SIGALRM just sets a flag that we check periodically. This
|
||||||
|
avoids problems with the semi-tricky stuff we do with the xfree of
|
||||||
|
--- 141,150 ----
|
||||||
|
int sigalrm_seen;
|
||||||
|
|
||||||
|
! static int reading, tty_modified;
|
||||||
|
static SigHandler *old_alrm;
|
||||||
|
static unsigned char delim;
|
||||||
|
|
||||||
|
+ static struct ttsave termsave;
|
||||||
|
+
|
||||||
|
/* In all cases, SIGALRM just sets a flag that we check periodically. This
|
||||||
|
avoids problems with the semi-tricky stuff we do with the xfree of
|
||||||
|
***************
|
||||||
|
*** 189,193 ****
|
||||||
|
SHELL_VAR *var;
|
||||||
|
TTYSTRUCT ttattrs, ttset;
|
||||||
|
- struct ttsave termsave;
|
||||||
|
#if defined (ARRAY_VARS)
|
||||||
|
WORD_LIST *alist;
|
||||||
|
--- 191,194 ----
|
||||||
|
***************
|
||||||
|
*** 222,226 ****
|
||||||
|
USE_VAR(lastsig);
|
||||||
|
|
||||||
|
! sigalrm_seen = reading = 0;
|
||||||
|
|
||||||
|
i = 0; /* Index into the string that we are reading. */
|
||||||
|
--- 223,227 ----
|
||||||
|
USE_VAR(lastsig);
|
||||||
|
|
||||||
|
! sigalrm_seen = reading = tty_modified = 0;
|
||||||
|
|
||||||
|
i = 0; /* Index into the string that we are reading. */
|
||||||
|
***************
|
||||||
|
*** 439,442 ****
|
||||||
|
--- 440,445 ----
|
||||||
|
goto assign_vars;
|
||||||
|
}
|
||||||
|
+ if (interactive_shell == 0)
|
||||||
|
+ initialize_terminating_signals ();
|
||||||
|
old_alrm = set_signal_handler (SIGALRM, sigalrm);
|
||||||
|
add_unwind_protect (reset_alarm, (char *)NULL);
|
||||||
|
***************
|
||||||
|
*** 483,487 ****
|
||||||
|
--- 486,493 ----
|
||||||
|
if (i < 0)
|
||||||
|
sh_ttyerror (1);
|
||||||
|
+ tty_modified = 1;
|
||||||
|
add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
|
||||||
|
+ if (interactive_shell == 0)
|
||||||
|
+ initialize_terminating_signals ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
***************
|
||||||
|
*** 498,502 ****
|
||||||
|
--- 504,511 ----
|
||||||
|
sh_ttyerror (1);
|
||||||
|
|
||||||
|
+ tty_modified = 1;
|
||||||
|
add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
|
||||||
|
+ if (interactive_shell == 0)
|
||||||
|
+ initialize_terminating_signals ();
|
||||||
|
}
|
||||||
|
|
||||||
|
***************
|
||||||
|
*** 589,592 ****
|
||||||
|
--- 598,603 ----
|
||||||
|
else
|
||||||
|
lastsig = 0;
|
||||||
|
+ if (terminating_signal && tty_modified)
|
||||||
|
+ ttyrestore (&termsave); /* fix terminal before exiting */
|
||||||
|
CHECK_TERMSIG;
|
||||||
|
eof = 1;
|
||||||
|
***************
|
||||||
|
*** 979,982 ****
|
||||||
|
--- 990,1007 ----
|
||||||
|
{
|
||||||
|
ttsetattr (ttp->fd, ttp->attrs);
|
||||||
|
+ tty_modified = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ void
|
||||||
|
+ read_tty_cleanup ()
|
||||||
|
+ {
|
||||||
|
+ if (tty_modified)
|
||||||
|
+ ttyrestore (&termsave);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ int
|
||||||
|
+ read_tty_modified ()
|
||||||
|
+ {
|
||||||
|
+ return (tty_modified);
|
||||||
|
}
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/builtins/common.h 2014-10-01 12:57:47.000000000 -0400
|
||||||
|
--- builtins/common.h 2014-12-22 10:10:14.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 123,126 ****
|
||||||
|
--- 141,148 ----
|
||||||
|
extern void getopts_reset __P((int));
|
||||||
|
|
||||||
|
+ /* Functions from read.def */
|
||||||
|
+ extern void read_tty_cleanup __P((void));
|
||||||
|
+ extern int read_tty_modified __P((void));
|
||||||
|
+
|
||||||
|
/* Functions from set.def */
|
||||||
|
extern int minus_o_option_value __P((char *));
|
||||||
|
*** ../bash-4.3-patched/bashline.c 2014-05-14 09:22:39.000000000 -0400
|
||||||
|
--- bashline.c 2014-09-08 11:28:56.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 203,206 ****
|
||||||
|
--- 203,207 ----
|
||||||
|
extern int array_needs_making;
|
||||||
|
extern int posixly_correct, no_symbolic_links;
|
||||||
|
+ extern int sigalrm_seen;
|
||||||
|
extern char *current_prompt_string, *ps1_prompt;
|
||||||
|
extern STRING_INT_ALIST word_token_alist[];
|
||||||
|
***************
|
||||||
|
*** 4209,4214 ****
|
||||||
|
/* If we're going to longjmp to top_level, make sure we clean up readline.
|
||||||
|
check_signals will call QUIT, which will eventually longjmp to top_level,
|
||||||
|
! calling run_interrupt_trap along the way. */
|
||||||
|
! if (interrupt_state)
|
||||||
|
rl_cleanup_after_signal ();
|
||||||
|
bashline_reset_event_hook ();
|
||||||
|
--- 4262,4268 ----
|
||||||
|
/* If we're going to longjmp to top_level, make sure we clean up readline.
|
||||||
|
check_signals will call QUIT, which will eventually longjmp to top_level,
|
||||||
|
! calling run_interrupt_trap along the way. The check for sigalrm_seen is
|
||||||
|
! to clean up the read builtin's state. */
|
||||||
|
! if (terminating_signal || interrupt_state || sigalrm_seen)
|
||||||
|
rl_cleanup_after_signal ();
|
||||||
|
bashline_reset_event_hook ();
|
||||||
|
*** ../bash-4.3-patched/sig.c 2014-01-10 15:06:06.000000000 -0500
|
||||||
|
--- sig.c 2014-09-08 11:26:33.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 533,538 ****
|
||||||
|
/* Set the event hook so readline will call it after the signal handlers
|
||||||
|
finish executing, so if this interrupted character input we can get
|
||||||
|
! quick response. */
|
||||||
|
! if (interactive_shell && interactive && no_line_editing == 0)
|
||||||
|
bashline_set_event_hook ();
|
||||||
|
#endif
|
||||||
|
--- 533,540 ----
|
||||||
|
/* Set the event hook so readline will call it after the signal handlers
|
||||||
|
finish executing, so if this interrupted character input we can get
|
||||||
|
! quick response. If readline is active or has modified the terminal we
|
||||||
|
! need to set this no matter what the signal is, though the check for
|
||||||
|
! RL_STATE_TERMPREPPED is possibly redundant. */
|
||||||
|
! if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
|
||||||
|
bashline_set_event_hook ();
|
||||||
|
#endif
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 32
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 33
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-033.sig
Normal file
BIN
SRC/patches/bash43-033.sig
Normal file
Binary file not shown.
90
SRC/patches/bash43-034.patch
Normal file
90
SRC/patches/bash43-034.patch
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-034
|
||||||
|
|
||||||
|
Bug-Reported-by: Dreamcat4 <dreamcat4@gmail.com>
|
||||||
|
Bug-Reference-ID: <CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
If neither the -f nor -v options is supplied to unset, and a name argument is
|
||||||
|
found to be a function and unset, subsequent name arguments are not treated as
|
||||||
|
variables before attempting to unset a function by that name.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/builtins/set.def 2013-04-19 07:20:34.000000000 -0400
|
||||||
|
--- builtins/set.def 2015-05-05 13:25:36.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 752,758 ****
|
||||||
|
--- 797,805 ----
|
||||||
|
{
|
||||||
|
int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
|
||||||
|
+ int global_unset_func, global_unset_var;
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
unset_function = unset_variable = unset_array = nameref = any_failed = 0;
|
||||||
|
+ global_unset_func = global_unset_var = 0;
|
||||||
|
|
||||||
|
reset_internal_getopt ();
|
||||||
|
***************
|
||||||
|
*** 762,769 ****
|
||||||
|
{
|
||||||
|
case 'f':
|
||||||
|
! unset_function = 1;
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
! unset_variable = 1;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
--- 809,816 ----
|
||||||
|
{
|
||||||
|
case 'f':
|
||||||
|
! global_unset_func = 1;
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
! global_unset_var = 1;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
***************
|
||||||
|
*** 778,782 ****
|
||||||
|
list = loptend;
|
||||||
|
|
||||||
|
! if (unset_function && unset_variable)
|
||||||
|
{
|
||||||
|
builtin_error (_("cannot simultaneously unset a function and a variable"));
|
||||||
|
--- 825,829 ----
|
||||||
|
list = loptend;
|
||||||
|
|
||||||
|
! if (global_unset_func && global_unset_var)
|
||||||
|
{
|
||||||
|
builtin_error (_("cannot simultaneously unset a function and a variable"));
|
||||||
|
***************
|
||||||
|
*** 796,799 ****
|
||||||
|
--- 843,849 ----
|
||||||
|
name = list->word->word;
|
||||||
|
|
||||||
|
+ unset_function = global_unset_func;
|
||||||
|
+ unset_variable = global_unset_var;
|
||||||
|
+
|
||||||
|
#if defined (ARRAY_VARS)
|
||||||
|
unset_array = 0;
|
||||||
|
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 33
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 34
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-034.sig
Normal file
BIN
SRC/patches/bash43-034.sig
Normal file
Binary file not shown.
63
SRC/patches/bash43-035.patch
Normal file
63
SRC/patches/bash43-035.patch
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-035
|
||||||
|
|
||||||
|
Bug-Reported-by: <romerox.adrian@gmail.com>
|
||||||
|
Bug-Reference-ID: <CABV5r3zhPXmSKUe9uedeGc5YFBM2njJ1iVmY2h5neWdQpDBQug@mail.gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
A locale with a long name can trigger a buffer overflow and core dump. This
|
||||||
|
applies on systems that do not have locale_charset in libc, are not using
|
||||||
|
GNU libiconv, and are not using the libintl that ships with bash in lib/intl.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/lib/sh/unicode.c 2014-01-30 16:47:19.000000000 -0500
|
||||||
|
--- lib/sh/unicode.c 2015-05-01 08:58:30.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 79,83 ****
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
! strcpy (charsetbuf, s+1);
|
||||||
|
t = strchr (charsetbuf, '@');
|
||||||
|
if (t)
|
||||||
|
--- 79,84 ----
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
! strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1);
|
||||||
|
! charsetbuf[sizeof (charsetbuf) - 1] = '\0';
|
||||||
|
t = strchr (charsetbuf, '@');
|
||||||
|
if (t)
|
||||||
|
***************
|
||||||
|
*** 85,89 ****
|
||||||
|
return charsetbuf;
|
||||||
|
}
|
||||||
|
! strcpy (charsetbuf, locale);
|
||||||
|
return charsetbuf;
|
||||||
|
}
|
||||||
|
--- 86,91 ----
|
||||||
|
return charsetbuf;
|
||||||
|
}
|
||||||
|
! strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1);
|
||||||
|
! charsetbuf[sizeof (charsetbuf) - 1] = '\0';
|
||||||
|
return charsetbuf;
|
||||||
|
}
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 34
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 35
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-035.sig
Normal file
BIN
SRC/patches/bash43-035.sig
Normal file
Binary file not shown.
57
SRC/patches/bash43-036.patch
Normal file
57
SRC/patches/bash43-036.patch
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-036
|
||||||
|
|
||||||
|
Bug-Reported-by: emanuelczirai@cryptolab.net
|
||||||
|
Bug-Reference-ID: <f962e4f556da5ebfadaf7afe9c78a8cb@cryptolab.net>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
When evaluating and setting integer variables, and the assignment fails to
|
||||||
|
create a variable (for example, when performing an operation on an array
|
||||||
|
variable with an invalid subscript), bash attempts to dereference a null
|
||||||
|
pointer, causing a segmentation violation.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-20150206/variables.c 2015-01-23 20:39:27.000000000 -0500
|
||||||
|
--- variables.c 2015-02-19 13:56:12.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 2834,2841 ****
|
||||||
|
v = bind_variable (lhs, rhs, 0);
|
||||||
|
|
||||||
|
! if (v && isint)
|
||||||
|
! VSETATTR (v, att_integer);
|
||||||
|
!
|
||||||
|
! VUNSETATTR (v, att_invisible);
|
||||||
|
|
||||||
|
return (v);
|
||||||
|
--- 2834,2843 ----
|
||||||
|
v = bind_variable (lhs, rhs, 0);
|
||||||
|
|
||||||
|
! if (v)
|
||||||
|
! {
|
||||||
|
! if (isint)
|
||||||
|
! VSETATTR (v, att_integer);
|
||||||
|
! VUNSETATTR (v, att_invisible);
|
||||||
|
! }
|
||||||
|
|
||||||
|
return (v);
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 35
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 36
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-036.sig
Normal file
BIN
SRC/patches/bash43-036.sig
Normal file
Binary file not shown.
43
SRC/patches/bash43-037.patch
Normal file
43
SRC/patches/bash43-037.patch
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-037
|
||||||
|
|
||||||
|
Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org>
|
||||||
|
Bug-Reference-ID: <20150204144240.GN13956@eeg.ccf.org>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
If an associative array uses `@' or `*' as a subscript, `declare -p' produces
|
||||||
|
output that cannot be reused as input.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/assoc.c 2011-11-05 16:39:05.000000000 -0400
|
||||||
|
--- assoc.c 2015-02-04 15:28:25.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 437,440 ****
|
||||||
|
--- 440,445 ----
|
||||||
|
if (sh_contains_shell_metas (tlist->key))
|
||||||
|
istr = sh_double_quote (tlist->key);
|
||||||
|
+ else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0')
|
||||||
|
+ istr = sh_double_quote (tlist->key);
|
||||||
|
else
|
||||||
|
istr = tlist->key;
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 36
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 37
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-037.sig
Normal file
BIN
SRC/patches/bash43-037.sig
Normal file
Binary file not shown.
88
SRC/patches/bash43-038.patch
Normal file
88
SRC/patches/bash43-038.patch
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-038
|
||||||
|
|
||||||
|
Bug-Reported-by: worley@alum.mit.edu (Dale R. Worley)
|
||||||
|
Bug-Reference-ID: <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
There are a number of instances where `time' is not recognized as a reserved
|
||||||
|
word when the shell grammar says it should be.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400
|
||||||
|
--- parse.y 2014-06-11 10:25:53.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 2819,2827 ****
|
||||||
|
case OR_OR:
|
||||||
|
case '&':
|
||||||
|
case DO:
|
||||||
|
case THEN:
|
||||||
|
case ELSE:
|
||||||
|
case '{': /* } */
|
||||||
|
! case '(': /* ) */
|
||||||
|
case BANG: /* ! time pipeline */
|
||||||
|
case TIME: /* time time pipeline */
|
||||||
|
--- 2819,2832 ----
|
||||||
|
case OR_OR:
|
||||||
|
case '&':
|
||||||
|
+ case WHILE:
|
||||||
|
case DO:
|
||||||
|
+ case UNTIL:
|
||||||
|
+ case IF:
|
||||||
|
case THEN:
|
||||||
|
+ case ELIF:
|
||||||
|
case ELSE:
|
||||||
|
case '{': /* } */
|
||||||
|
! case '(': /* )( */
|
||||||
|
! case ')': /* only valid in case statement */
|
||||||
|
case BANG: /* ! time pipeline */
|
||||||
|
case TIME: /* time time pipeline */
|
||||||
|
*** ../bash-4.3-patched/y.tab.c 2014-10-05 13:52:50.000000000 -0400
|
||||||
|
--- y.tab.c 2015-05-19 15:08:43.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 5131,5139 ****
|
||||||
|
case OR_OR:
|
||||||
|
case '&':
|
||||||
|
case DO:
|
||||||
|
case THEN:
|
||||||
|
case ELSE:
|
||||||
|
case '{': /* } */
|
||||||
|
! case '(': /* ) */
|
||||||
|
case BANG: /* ! time pipeline */
|
||||||
|
case TIME: /* time time pipeline */
|
||||||
|
--- 5131,5144 ----
|
||||||
|
case OR_OR:
|
||||||
|
case '&':
|
||||||
|
+ case WHILE:
|
||||||
|
case DO:
|
||||||
|
+ case UNTIL:
|
||||||
|
+ case IF:
|
||||||
|
case THEN:
|
||||||
|
+ case ELIF:
|
||||||
|
case ELSE:
|
||||||
|
case '{': /* } */
|
||||||
|
! case '(': /* )( */
|
||||||
|
! case ')': /* only valid in case statement */
|
||||||
|
case BANG: /* ! time pipeline */
|
||||||
|
case TIME: /* time time pipeline */
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 37
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 38
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-038.sig
Normal file
BIN
SRC/patches/bash43-038.sig
Normal file
Binary file not shown.
57
SRC/patches/bash43-039.patch
Normal file
57
SRC/patches/bash43-039.patch
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-039
|
||||||
|
|
||||||
|
Bug-Reported-by: SN <poczta-sn@gazeta.pl>
|
||||||
|
Bug-Reference-ID: <54E2554C.205@gazeta.pl>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
Using the output of `declare -p' when run in a function can result in variables
|
||||||
|
that are invisible to `declare -p'. This problem occurs when an assignment
|
||||||
|
builtin such as `declare' receives a quoted compound array assignment as one of
|
||||||
|
its arguments.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** /usr/src/local/bash/bash-4.3-patched/arrayfunc.c 2014-10-01 13:08:48.000000000 -0400
|
||||||
|
--- arrayfunc.c 2015-02-19 14:33:05.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 405,408 ****
|
||||||
|
--- 405,411 ----
|
||||||
|
else
|
||||||
|
array_insert (a, i, l->word->word);
|
||||||
|
+
|
||||||
|
+ VUNSETATTR (var, att_invisible); /* no longer invisible */
|
||||||
|
+
|
||||||
|
return var;
|
||||||
|
}
|
||||||
|
***************
|
||||||
|
*** 635,638 ****
|
||||||
|
--- 638,645 ----
|
||||||
|
if (nlist)
|
||||||
|
dispose_words (nlist);
|
||||||
|
+
|
||||||
|
+ if (var)
|
||||||
|
+ VUNSETATTR (var, att_invisible); /* no longer invisible */
|
||||||
|
+
|
||||||
|
return (var);
|
||||||
|
}
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 38
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 39
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-039.sig
Normal file
BIN
SRC/patches/bash43-039.sig
Normal file
Binary file not shown.
47
SRC/patches/bash43-040.patch
Normal file
47
SRC/patches/bash43-040.patch
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-040
|
||||||
|
|
||||||
|
Bug-Reported-by: Jean Delvare <jdelvare@suse.de>
|
||||||
|
Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
There is a memory leak that occurs when bash expands an array reference on
|
||||||
|
the rhs of an assignment statement.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400
|
||||||
|
--- subst.c 2015-06-22 09:16:53.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 5783,5787 ****
|
||||||
|
if (pflags & PF_ASSIGNRHS)
|
||||||
|
{
|
||||||
|
! temp = array_variable_name (name, &tt, (int *)0);
|
||||||
|
if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
|
||||||
|
temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
|
||||||
|
--- 5783,5787 ----
|
||||||
|
if (pflags & PF_ASSIGNRHS)
|
||||||
|
{
|
||||||
|
! var = array_variable_part (name, &tt, (int *)0);
|
||||||
|
if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
|
||||||
|
temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 39
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 40
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-040.sig
Normal file
BIN
SRC/patches/bash43-040.sig
Normal file
Binary file not shown.
72
SRC/patches/bash43-041.patch
Normal file
72
SRC/patches/bash43-041.patch
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-041
|
||||||
|
|
||||||
|
Bug-Reported-by: Hanno Böck <hanno@hboeck.de>
|
||||||
|
Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html,
|
||||||
|
http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
There are several out-of-bounds read errors that occur when completing command
|
||||||
|
lines where assignment statements appear before the command name. The first
|
||||||
|
two appear only when programmable completion is enabled; the last one only
|
||||||
|
happens when listing possible completions.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3.40/bashline.c 2014-12-29 14:39:43.000000000 -0500
|
||||||
|
--- bashline.c 2015-08-12 10:21:58.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 1469,1476 ****
|
||||||
|
--- 1469,1489 ----
|
||||||
|
os = start;
|
||||||
|
n = 0;
|
||||||
|
+ was_assignment = 0;
|
||||||
|
s = find_cmd_start (os);
|
||||||
|
e = find_cmd_end (end);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
+ /* Don't read past the end of rl_line_buffer */
|
||||||
|
+ if (s > rl_end)
|
||||||
|
+ {
|
||||||
|
+ s1 = s = e1;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ /* Or past point if point is within an assignment statement */
|
||||||
|
+ else if (was_assignment && s > rl_point)
|
||||||
|
+ {
|
||||||
|
+ s1 = s = e1;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
/* Skip over assignment statements preceding a command name. If we
|
||||||
|
don't find a command name at all, we can perform command name
|
||||||
|
*** ../bash-4.3.40/lib/readline/complete.c 2013-10-14 09:27:10.000000000 -0400
|
||||||
|
--- lib/readline/complete.c 2015-07-31 09:34:39.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 690,693 ****
|
||||||
|
--- 690,695 ----
|
||||||
|
if (temp == 0 || *temp == '\0')
|
||||||
|
return (pathname);
|
||||||
|
+ else if (temp[1] == 0 && temp == pathname)
|
||||||
|
+ return (pathname);
|
||||||
|
/* If the basename is NULL, we might have a pathname like '/usr/src/'.
|
||||||
|
Look for a previous slash and, if one is found, return the portion
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 40
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 41
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-041.sig
Normal file
BIN
SRC/patches/bash43-041.sig
Normal file
Binary file not shown.
55
SRC/patches/bash43-042.patch
Normal file
55
SRC/patches/bash43-042.patch
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-042
|
||||||
|
|
||||||
|
Bug-Reported-by: Nathan Neulinger <nneul@neulinger.org>
|
||||||
|
Bug-Reference-ID: <558EFDF2.7060402@neulinger.org>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
There is a problem when parsing command substitutions containing `case'
|
||||||
|
commands within pipelines that causes the parser to not correctly identify
|
||||||
|
the end of the command substitution.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400
|
||||||
|
--- parse.y 2015-06-29 10:59:27.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 3709,3712 ****
|
||||||
|
--- 3709,3714 ----
|
||||||
|
tflags |= LEX_INWORD;
|
||||||
|
lex_wlen = 0;
|
||||||
|
+ if (tflags & LEX_RESWDOK)
|
||||||
|
+ lex_rwlen = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*** ../bash-4.3-patched/y.tab.c 2015-05-18 19:27:05.000000000 -0400
|
||||||
|
--- y.tab.c 2015-06-29 10:59:27.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 6021,6024 ****
|
||||||
|
--- 6021,6026 ----
|
||||||
|
tflags |= LEX_INWORD;
|
||||||
|
lex_wlen = 0;
|
||||||
|
+ if (tflags & LEX_RESWDOK)
|
||||||
|
+ lex_rwlen = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 41
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 42
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-042.sig
Normal file
BIN
SRC/patches/bash43-042.sig
Normal file
Binary file not shown.
59
SRC/patches/bash43-043.patch
Normal file
59
SRC/patches/bash43-043.patch
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-043
|
||||||
|
|
||||||
|
Bug-Reported-by: lolilolicon <lolilolicon@gmail.com>
|
||||||
|
Bug-Reference-ID: <CAMtVo_MF16KWanCB4C8WxA88Qt26zWsvV6V7+_U2fM0E6tCDxw@mail.gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00040.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
When the lastpipe option is enabled, the last component can contain nested
|
||||||
|
pipelines and cause a segmentation fault under certain circumestances.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** ../bash-4.3-patched/execute_cmd.c 2014-07-30 10:26:52.000000000 -0400
|
||||||
|
--- execute_cmd.c 2014-08-15 08:55:24.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 2406,2412 ****
|
||||||
|
{
|
||||||
|
#if defined (JOB_CONTROL)
|
||||||
|
! append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
|
||||||
|
! #endif
|
||||||
|
lstdin = wait_for (lastpid);
|
||||||
|
#if defined (JOB_CONTROL)
|
||||||
|
/* If wait_for removes the job from the jobs table, use result of last
|
||||||
|
--- 2433,2447 ----
|
||||||
|
{
|
||||||
|
#if defined (JOB_CONTROL)
|
||||||
|
! if (INVALID_JOB (lastpipe_jid) == 0)
|
||||||
|
! {
|
||||||
|
! append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid);
|
||||||
|
! lstdin = wait_for (lastpid);
|
||||||
|
! }
|
||||||
|
! else
|
||||||
|
! lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */
|
||||||
|
! #else
|
||||||
|
lstdin = wait_for (lastpid);
|
||||||
|
+ #endif
|
||||||
|
+
|
||||||
|
#if defined (JOB_CONTROL)
|
||||||
|
/* If wait_for removes the job from the jobs table, use result of last
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 42
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 43
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-043.sig
Normal file
BIN
SRC/patches/bash43-043.sig
Normal file
Binary file not shown.
48
SRC/patches/bash43-044.patch
Normal file
48
SRC/patches/bash43-044.patch
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-044
|
||||||
|
|
||||||
|
Bug-Reported-by: Ondrej Oprala <ooprala@redhat.com>
|
||||||
|
Bug-Reference-ID: <539ED55B.2080103@redhat.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00046.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
A typo prevents the `compat42' shopt option from working as intended.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
diff -rC 2 bash-4.3.42/builtins/shopt.def bash-4.3.43/builtins/shopt.def
|
||||||
|
*** bash-4.3.42/builtins/shopt.def 2013-02-27 09:43:20.000000000 -0500
|
||||||
|
--- builtins/shopt.def 2015-10-16 11:25:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 161,165 ****
|
||||||
|
{ "compat40", &shopt_compat40, set_compatibility_level },
|
||||||
|
{ "compat41", &shopt_compat41, set_compatibility_level },
|
||||||
|
! { "compat42", &shopt_compat41, set_compatibility_level },
|
||||||
|
#if defined (READLINE)
|
||||||
|
{ "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
|
||||||
|
--- 161,165 ----
|
||||||
|
{ "compat40", &shopt_compat40, set_compatibility_level },
|
||||||
|
{ "compat41", &shopt_compat41, set_compatibility_level },
|
||||||
|
! { "compat42", &shopt_compat42, set_compatibility_level },
|
||||||
|
#if defined (READLINE)
|
||||||
|
{ "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
|
||||||
|
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 43
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 44
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-044.sig
Normal file
BIN
SRC/patches/bash43-044.sig
Normal file
Binary file not shown.
52
SRC/patches/bash43-045.patch
Normal file
52
SRC/patches/bash43-045.patch
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-045
|
||||||
|
|
||||||
|
Bug-Reported-by: Basin Ilya <basinilya@gmail.com>
|
||||||
|
Bug-Reference-ID: <5624C0AC.8070802@gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-10/msg00141.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
If a file open attempted as part of a redirection fails because it is interrupted
|
||||||
|
by a signal, the shell needs to process any pending traps to allow the redirection
|
||||||
|
to be canceled.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** bash-20150109/redir.c 2014-12-03 10:47:38.000000000 -0500
|
||||||
|
--- redir.c 2015-01-16 10:15:47.000000000 -0500
|
||||||
|
***************
|
||||||
|
*** 672,676 ****
|
||||||
|
e = errno;
|
||||||
|
if (fd < 0 && e == EINTR)
|
||||||
|
! QUIT;
|
||||||
|
errno = e;
|
||||||
|
}
|
||||||
|
--- 672,679 ----
|
||||||
|
e = errno;
|
||||||
|
if (fd < 0 && e == EINTR)
|
||||||
|
! {
|
||||||
|
! QUIT;
|
||||||
|
! run_pending_traps ();
|
||||||
|
! }
|
||||||
|
errno = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 44
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 45
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-045.sig
Normal file
BIN
SRC/patches/bash43-045.sig
Normal file
Binary file not shown.
55
SRC/patches/bash43-046.patch
Normal file
55
SRC/patches/bash43-046.patch
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 4.3
|
||||||
|
Patch-ID: bash43-046
|
||||||
|
|
||||||
|
Bug-Reported-by: Sergey Tselikh <stselikh@gmail.com>
|
||||||
|
Bug-Reference-ID: <20150816110235.91f3e12e3f20d20cdaad963e@gmail.com>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-08/msg00080.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
An incorrect conversion from an indexed to associative array can result in a
|
||||||
|
core dump.
|
||||||
|
|
||||||
|
Patch (apply with `patch -p0'):
|
||||||
|
|
||||||
|
*** /fs2/chet/bash/bash-20150813/subst.c 2015-08-13 11:32:54.000000000 -0400
|
||||||
|
--- subst.c 2015-08-18 10:13:59.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 9562,9566 ****
|
||||||
|
opts[opti] = '\0';
|
||||||
|
if (opti > 0)
|
||||||
|
! make_internal_declare (tlist->word->word, opts);
|
||||||
|
|
||||||
|
t = do_word_assignment (tlist->word, 0);
|
||||||
|
--- 9562,9573 ----
|
||||||
|
opts[opti] = '\0';
|
||||||
|
if (opti > 0)
|
||||||
|
! {
|
||||||
|
! t = make_internal_declare (tlist->word->word, opts);
|
||||||
|
! if (t != EXECUTION_SUCCESS)
|
||||||
|
! {
|
||||||
|
! last_command_exit_value = t;
|
||||||
|
! exp_jump_to_top_level (DISCARD);
|
||||||
|
! }
|
||||||
|
! }
|
||||||
|
|
||||||
|
t = do_word_assignment (tlist->word, 0);
|
||||||
|
|
||||||
|
*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
|
||||||
|
--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 45
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 46
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
BIN
SRC/patches/bash43-046.sig
Normal file
BIN
SRC/patches/bash43-046.sig
Normal file
Binary file not shown.
Reference in New Issue
Block a user