07a490
import bash-4.2.46-30.el7
@@ -0,0 +1 @@
|
|
1
|
+
487840ab7134eb7901fbb2e49b0ee3d22de15cb8 SOURCES/bash-4.2.tar.gz
|
@@ -0,0 +1 @@
|
|
1
|
+
SOURCES/bash-4.2.tar.gz
|
@@ -1,5 +0,0 @@
|
|
1
|
-
The master branch has no content
|
2
|
-
|
3
|
-
Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
|
4
|
-
|
5
|
-
If you find this file in a distro specific branch, it means that no content has been checked in yet
|
@@ -0,0 +1,11 @@
|
|
1
|
+
--- bash-2.02-orig/parse.y Wed Mar 25 18:16:23 1998
|
2
|
+
+++ bash-2.02/parse.y Sun Apr 19 16:46:34 1998
|
3
|
+
|
4
|
+
|
5
|
+
#if defined (READLINE)
|
6
|
+
char *current_readline_prompt = (char *)NULL;
|
7
|
+
-char *current_readline_line = (char *)NULL;
|
8
|
+
+unsigned char *current_readline_line = (unsigned char *)NULL;
|
9
|
+
int current_readline_line_index = 0;
|
10
|
+
|
11
|
+
static int
|
@@ -0,0 +1,30 @@
|
|
1
|
+
--- bash-3.0/config.h.in.paths 2004-07-21 21:08:31.000000000 +0100
|
2
|
+
+++ bash-3.0/config.h.in 2004-07-28 09:16:27.257884999 +0100
|
3
|
+
|
4
|
+
|
5
|
+
/* System paths */
|
6
|
+
|
7
|
+
-#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail"
|
8
|
+
+#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail"
|
9
|
+
|
10
|
+
/* Characteristics of the system's header files and libraries that affect
|
11
|
+
the compilation environment. */
|
12
|
+
--- bash-3.0/config-top.h.paths 2003-08-05 15:36:12.000000000 +0100
|
13
|
+
+++ bash-3.0/config-top.h 2004-07-28 09:36:27.117205637 +0100
|
14
|
+
|
15
|
+
/* The default value of the PATH variable. */
|
16
|
+
#ifndef DEFAULT_PATH_VALUE
|
17
|
+
#define DEFAULT_PATH_VALUE \
|
18
|
+
- "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
|
19
|
+
+ "/usr/local/bin:/bin:/usr/bin"
|
20
|
+
#endif
|
21
|
+
|
22
|
+
/* The value for PATH when invoking `command -p'. This is only used when
|
23
|
+
the Posix.2 confstr () function, or CS_PATH define are not present. */
|
24
|
+
#ifndef STANDARD_UTILS_PATH
|
25
|
+
#define STANDARD_UTILS_PATH \
|
26
|
+
- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
|
27
|
+
+ "/bin:/usr/bin:/usr/sbin:/sbin"
|
28
|
+
#endif
|
29
|
+
|
30
|
+
/* Default primary and secondary prompt strings. */
|
@@ -0,0 +1,12 @@
|
|
1
|
+
diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h
|
2
|
+
--- bash-3.2/config-top.h.profile 2008-07-17 13:35:39.000000000 +0200
|
3
|
+
+++ bash-3.2/config-top.h 2008-07-17 13:42:18.000000000 +0200
|
4
|
+
|
5
|
+
what POSIX.2 specifies. */
|
6
|
+
#define CONTINUE_AFTER_KILL_ERROR
|
7
|
+
|
8
|
+
+#define NON_INTERACTIVE_LOGIN_SHELLS
|
9
|
+
+
|
10
|
+
/* Define BREAK_COMPLAINS if you want the non-standard, but useful
|
11
|
+
error messages about `break' and `continue' out of context. */
|
12
|
+
#define BREAK_COMPLAINS
|
@@ -0,0 +1,218 @@
|
|
1
|
+
diff -up bash-4.2-rc2/config.h.in.interpreter bash-4.2-rc2/config.h.in
|
2
|
+
--- bash-4.2-rc2/config.h.in.interpreter 2011-02-09 07:59:21.000000000 +0100
|
3
|
+
+++ bash-4.2-rc2/config.h.in 2011-02-09 07:59:21.000000000 +0100
|
4
|
+
|
5
|
+
/* Define if you have the pathconf function. */
|
6
|
+
#undef HAVE_PATHCONF
|
7
|
+
|
8
|
+
+/* Define if you have the pread function. */
|
9
|
+
+#undef HAVE_PREAD
|
10
|
+
+
|
11
|
+
/* Define if you have the putenv function. */
|
12
|
+
#undef HAVE_PUTENV
|
13
|
+
|
14
|
+
|
15
|
+
/* Define if you have the <dlfcn.h> header file. */
|
16
|
+
#undef HAVE_DLFCN_H
|
17
|
+
|
18
|
+
+/* Define if you have the <elf.h> header file. */
|
19
|
+
+#undef HAVE_ELF_H
|
20
|
+
+
|
21
|
+
/* Define if you have the <grp.h> header file. */
|
22
|
+
#undef HAVE_GRP_H
|
23
|
+
|
24
|
+
diff -up bash-4.2-rc2/configure.in.interpreter bash-4.2-rc2/configure.in
|
25
|
+
--- bash-4.2-rc2/configure.in.interpreter 2011-01-16 21:31:12.000000000 +0100
|
26
|
+
+++ bash-4.2-rc2/configure.in 2011-02-09 08:02:27.000000000 +0100
|
27
|
+
@@ -659,7 +659,7 @@ BASH_HEADER_INTTYPES
|
28
|
+
AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
|
29
|
+
memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
|
30
|
+
stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h \
|
31
|
+
- syslog.h ulimit.h)
|
32
|
+
+ syslog.h ulimit.h elf.h)
|
33
|
+
AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
|
34
|
+
sys/resource.h sys/param.h sys/socket.h sys/stat.h \
|
35
|
+
sys/time.h sys/times.h sys/types.h sys/wait.h)
|
36
|
+
@@ -723,7 +723,7 @@ dnl checks for system calls
|
37
|
+
AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
|
38
|
+
getpagesize getpeername getrlimit getrusage gettimeofday \
|
39
|
+
kill killpg lstat readlink sbrk select setdtablesize \
|
40
|
+
- setitimer tcgetpgrp uname ulimit waitpid)
|
41
|
+
+ setitimer tcgetpgrp uname ulimit waitpid pread)
|
42
|
+
AC_REPLACE_FUNCS(rename)
|
43
|
+
|
44
|
+
dnl checks for c library functions
|
45
|
+
diff -up bash-4.2-rc2/execute_cmd.c.interpreter bash-4.2-rc2/execute_cmd.c
|
46
|
+
--- bash-4.2-rc2/execute_cmd.c.interpreter 2011-01-20 04:24:47.000000000 +0100
|
47
|
+
+++ bash-4.2-rc2/execute_cmd.c 2011-02-09 07:59:21.000000000 +0100
|
48
|
+
|
49
|
+
# include <unistd.h>
|
50
|
+
#endif
|
51
|
+
|
52
|
+
+#ifdef HAVE_ELF_H
|
53
|
+
+# include <elf.h>
|
54
|
+
+#endif
|
55
|
+
+
|
56
|
+
#include "posixtime.h"
|
57
|
+
|
58
|
+
#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
|
59
|
+
@@ -4975,13 +4979,21 @@ shell_execve (command, args, env)
|
60
|
+
{
|
61
|
+
/* The file has the execute bits set, but the kernel refuses to
|
62
|
+
run it for some reason. See why. */
|
63
|
+
+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
64
|
+
+ int fd = open (command, O_RDONLY);
|
65
|
+
+
|
66
|
+
+ if (fd >= 0)
|
67
|
+
+ sample_len = read (fd, sample, sizeof (sample));
|
68
|
+
+ else
|
69
|
+
+ sample_len = -1;
|
70
|
+
+#endif
|
71
|
+
#if defined (HAVE_HASH_BANG_EXEC)
|
72
|
+
- READ_SAMPLE_BUF (command, sample, sample_len);
|
73
|
+
if (sample_len > 2 && sample[0] == '#' && sample[1] == '!')
|
74
|
+
{
|
75
|
+
char *interp;
|
76
|
+
int ilen;
|
77
|
+
|
78
|
+
+ close (fd);
|
79
|
+
interp = getinterp (sample, sample_len, (int *)NULL);
|
80
|
+
ilen = strlen (interp);
|
81
|
+
errno = i;
|
82
|
+
@@ -4997,6 +5009,136 @@ shell_execve (command, args, env)
|
83
|
+
return (EX_NOEXEC);
|
84
|
+
}
|
85
|
+
#endif
|
86
|
+
+#if defined (HAVE_ELF_H)
|
87
|
+
+ if (i == ENOENT
|
88
|
+
+ && sample_len > EI_NIDENT
|
89
|
+
+ && memcmp (sample, ELFMAG, SELFMAG) == 0)
|
90
|
+
+ {
|
91
|
+
+ off_t offset = -1;
|
92
|
+
+
|
93
|
+
+ /* It is an ELF file. Now determine whether it is dynamically
|
94
|
+
+ linked and if yes, get the offset of the interpreter
|
95
|
+
+ string. */
|
96
|
+
+ if (sample[EI_CLASS] == ELFCLASS32
|
97
|
+
+ && sample_len > sizeof (Elf32_Ehdr))
|
98
|
+
+ {
|
99
|
+
+ Elf32_Ehdr ehdr;
|
100
|
+
+ Elf32_Phdr *phdr;
|
101
|
+
+ int nphdr;
|
102
|
+
+
|
103
|
+
+ /* We have to copy the data since the sample buffer
|
104
|
+
+ might not be aligned correctly to be accessed as
|
105
|
+
+ an Elf32_Ehdr struct. */
|
106
|
+
+ memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
107
|
+
+
|
108
|
+
+ nphdr = ehdr.e_phnum;
|
109
|
+
+ phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
110
|
+
+ if (phdr != NULL)
|
111
|
+
+ {
|
112
|
+
+#ifdef HAVE_PREAD
|
113
|
+
+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
114
|
+
+ ehdr.e_phoff);
|
115
|
+
+#else
|
116
|
+
+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
117
|
+
+ sample_len = read (fd, phdr,
|
118
|
+
+ nphdr * ehdr.e_phentsize);
|
119
|
+
+ else
|
120
|
+
+ sample_len = -1;
|
121
|
+
+#endif
|
122
|
+
+ if (sample_len == nphdr * ehdr.e_phentsize)
|
123
|
+
+ while (nphdr-- > 0)
|
124
|
+
+ if (phdr[nphdr].p_type == PT_INTERP)
|
125
|
+
+ {
|
126
|
+
+ offset = phdr[nphdr].p_offset;
|
127
|
+
+ break;
|
128
|
+
+ }
|
129
|
+
+ free (phdr);
|
130
|
+
+ }
|
131
|
+
+ }
|
132
|
+
+ else if (sample[EI_CLASS] == ELFCLASS64
|
133
|
+
+ && sample_len > sizeof (Elf64_Ehdr))
|
134
|
+
+ {
|
135
|
+
+ Elf64_Ehdr ehdr;
|
136
|
+
+ Elf64_Phdr *phdr;
|
137
|
+
+ int nphdr;
|
138
|
+
+
|
139
|
+
+ /* We have to copy the data since the sample buffer
|
140
|
+
+ might not be aligned correctly to be accessed as
|
141
|
+
+ an Elf64_Ehdr struct. */
|
142
|
+
+ memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
143
|
+
+
|
144
|
+
+ nphdr = ehdr.e_phnum;
|
145
|
+
+ phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
146
|
+
+ if (phdr != NULL)
|
147
|
+
+ {
|
148
|
+
+#ifdef HAVE_PREAD
|
149
|
+
+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
150
|
+
+ ehdr.e_phoff);
|
151
|
+
+#else
|
152
|
+
+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
153
|
+
+ sample_len = read (fd, phdr,
|
154
|
+
+ nphdr * ehdr.e_phentsize);
|
155
|
+
+ else
|
156
|
+
+ sample_len = -1;
|
157
|
+
+#endif
|
158
|
+
+ if (sample_len == nphdr * ehdr.e_phentsize)
|
159
|
+
+ while (nphdr-- > 0)
|
160
|
+
+ if (phdr[nphdr].p_type == PT_INTERP)
|
161
|
+
+ {
|
162
|
+
+ offset = phdr[nphdr].p_offset;
|
163
|
+
+ break;
|
164
|
+
+ }
|
165
|
+
+ free (phdr);
|
166
|
+
+ }
|
167
|
+
+ }
|
168
|
+
+
|
169
|
+
+ if (offset != -1)
|
170
|
+
+ {
|
171
|
+
+ size_t maxlen = 0;
|
172
|
+
+ size_t actlen = 0;
|
173
|
+
+ char *interp = NULL;
|
174
|
+
+
|
175
|
+
+ do
|
176
|
+
+ {
|
177
|
+
+ if (actlen == maxlen)
|
178
|
+
+ {
|
179
|
+
+ char *newinterp = realloc (interp, maxlen += 200);
|
180
|
+
+ if (newinterp == NULL)
|
181
|
+
+ {
|
182
|
+
+ actlen = 0;
|
183
|
+
+ break;
|
184
|
+
+ }
|
185
|
+
+ interp = newinterp;
|
186
|
+
+
|
187
|
+
+#ifdef HAVE_PREAD
|
188
|
+
+ actlen = pread (fd, interp, maxlen, offset);
|
189
|
+
+#else
|
190
|
+
+ if (lseek (fd, offset, SEEK_SET) != -1)
|
191
|
+
+ actlen = read (fd, interp, maxlen);
|
192
|
+
+ else
|
193
|
+
+ actlen = -1;
|
194
|
+
+#endif
|
195
|
+
+ }
|
196
|
+
+ }
|
197
|
+
+ while (actlen > 0 && memchr (interp, '\0', actlen) == NULL);
|
198
|
+
+
|
199
|
+
+ if (actlen > 0)
|
200
|
+
+ {
|
201
|
+
+ close (fd);
|
202
|
+
+ errno = i;
|
203
|
+
+ sys_error ("%s: %s: bad ELF interpreter", command,
|
204
|
+
+ interp);
|
205
|
+
+ free (interp);
|
206
|
+
+ return (EX_NOEXEC);
|
207
|
+
+ }
|
208
|
+
+
|
209
|
+
+ free (interp);
|
210
|
+
+ }
|
211
|
+
+ }
|
212
|
+
+#endif
|
213
|
+
+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
214
|
+
+ close (fd);
|
215
|
+
+#endif
|
216
|
+
errno = i;
|
217
|
+
file_error (command);
|
218
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
--- bash-2.05b/builtins/Makefile.in.debuginfo 2003-03-25 17:25:21.000000000 +0000
|
2
|
+
+++ bash-2.05b/builtins/Makefile.in 2003-03-25 17:25:49.000000000 +0000
|
3
|
+
|
4
|
+
$(RM) $@
|
5
|
+
./$(MKBUILTINS) $(DIRECTDEFINE) $<
|
6
|
+
$(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
|
7
|
+
- $(RM) $*.c
|
8
|
+
|
9
|
+
# How to make a .c file from a .def file.
|
10
|
+
.def.c:
|
@@ -0,0 +1,10 @@
|
|
1
|
+
--- bash-2.05b/doc/builtins.1.manso 2003-02-10 18:58:21.000000000 +0000
|
2
|
+
+++ bash-2.05b/doc/builtins.1 2003-02-10 18:58:28.000000000 +0000
|
3
|
+
|
4
|
+
ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
|
5
|
+
.SH BASH BUILTIN COMMANDS
|
6
|
+
.nr zZ 1
|
7
|
+
-.so bash.1
|
8
|
+
+.so man1/bash.1
|
9
|
+
.SH SEE ALSO
|
10
|
+
bash(1), sh(1)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
--- bash-2.05b/aclocal.m4.pgrp_sync 2002-06-25 14:45:43.000000000 +0100
|
2
|
+
+++ bash-2.05b/aclocal.m4 2003-01-15 18:17:35.000000000 +0000
|
3
|
+
|
4
|
+
wait(&status);
|
5
|
+
exit(ok ? 0 : 5);
|
6
|
+
}
|
7
|
+
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
|
8
|
+
+], bash_cv_pgrp_pipe=yes,bash_cv_pgrp_pipe=yes,
|
9
|
+
[AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
|
10
|
+
bash_cv_pgrp_pipe=no])
|
11
|
+
])
|
@@ -0,0 +1,11 @@
|
|
1
|
+
--- bash-2.05b/lib/readline/readline.c.oom 2002-03-13 23:10:46.000000000 +0100
|
2
|
+
+++ bash-2.05b/lib/readline/readline.c 2002-08-07 12:02:04.000000000 +0200
|
3
|
+
|
4
|
+
{
|
5
|
+
/* Special case rl_do_lowercase_version (). */
|
6
|
+
if (func == rl_do_lowercase_version)
|
7
|
+
- return (_rl_dispatch (_rl_to_lower (key), map));
|
8
|
+
+ return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
|
9
|
+
|
10
|
+
rl_executing_keymap = map;
|
11
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
--- bash-3.1/Makefile.in.xcc 2005-10-25 19:37:52.000000000 +0100
|
2
|
+
+++ bash-3.1/Makefile.in 2005-12-23 16:11:09.000000000 +0000
|
3
|
+
|
4
|
+
ARFLAGS = @ARFLAGS@
|
5
|
+
RANLIB = @RANLIB@
|
6
|
+
SIZE = @SIZE@
|
7
|
+
+STRIP = strip
|
8
|
+
|
9
|
+
INSTALL = @INSTALL@
|
10
|
+
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
11
|
+
|
12
|
+
@chmod a+rx bashbug
|
13
|
+
|
14
|
+
strip: $(Program) .made
|
15
|
+
- strip $(Program)
|
16
|
+
+ $(STRIP) $(Program)
|
17
|
+
ls -l $(Program)
|
18
|
+
-$(SIZE) $(Program)
|
19
|
+
|
@@ -0,0 +1,108 @@
|
|
1
|
+
diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in
|
2
|
+
--- bash-4.2/config.h.in.audit 2013-01-31 16:26:16.857698992 +0100
|
3
|
+
+++ bash-4.2/config.h.in 2013-01-31 16:26:16.876699255 +0100
|
4
|
+
|
5
|
+
|
6
|
+
/* End additions for lib/intl */
|
7
|
+
|
8
|
+
+
|
9
|
+
+/* Additions for lib/readline */
|
10
|
+
+
|
11
|
+
+/* Define if you have <linux/audit.h> and it defines AUDIT_USER_TTY */
|
12
|
+
+#undef HAVE_DECL_AUDIT_USER_TTY
|
13
|
+
+
|
14
|
+
+/* End additions for lib/readline */
|
15
|
+
+
|
16
|
+
#include "config-bot.h"
|
17
|
+
|
18
|
+
#endif /* _CONFIG_H_ */
|
19
|
+
diff -up bash-4.2/configure.in.audit bash-4.2/configure.in
|
20
|
+
--- bash-4.2/configure.in.audit 2013-01-31 16:26:16.858699005 +0100
|
21
|
+
+++ bash-4.2/configure.in 2013-01-31 16:26:16.877699269 +0100
|
22
|
+
@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK
|
23
|
+
BASH_SYS_PGRP_SYNC
|
24
|
+
BASH_SYS_SIGNAL_VINTAGE
|
25
|
+
|
26
|
+
+AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
|
27
|
+
+
|
28
|
+
dnl checking for the presence of certain library symbols
|
29
|
+
BASH_SYS_ERRLIST
|
30
|
+
BASH_SYS_SIGLIST
|
31
|
+
diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c
|
32
|
+
--- bash-4.2/lib/readline/readline.c.audit 2013-01-31 16:26:16.871699185 +0100
|
33
|
+
+++ bash-4.2/lib/readline/readline.c 2013-01-31 17:24:23.902744860 +0100
|
34
|
+
|
35
|
+
extern int errno;
|
36
|
+
#endif /* !errno */
|
37
|
+
|
38
|
+
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
39
|
+
+# include <sys/socket.h>
|
40
|
+
+# include <linux/audit.h>
|
41
|
+
+# include <linux/netlink.h>
|
42
|
+
+#endif
|
43
|
+
+
|
44
|
+
/* System-specific feature definitions and include files. */
|
45
|
+
#include "rldefs.h"
|
46
|
+
#include "rlmbutil.h"
|
47
|
+
@@ -301,7 +307,48 @@ rl_set_prompt (prompt)
|
48
|
+
rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
|
49
|
+
return 0;
|
50
|
+
}
|
51
|
+
-
|
52
|
+
+
|
53
|
+
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
54
|
+
+/* Report STRING to the audit system. */
|
55
|
+
+static void
|
56
|
+
+audit_tty (char *string)
|
57
|
+
+{
|
58
|
+
+ struct sockaddr_nl addr;
|
59
|
+
+ struct msghdr msg;
|
60
|
+
+ struct nlmsghdr nlm;
|
61
|
+
+ struct iovec iov[2];
|
62
|
+
+ size_t size;
|
63
|
+
+ int fd;
|
64
|
+
+
|
65
|
+
+ size = strlen (string) + 1;
|
66
|
+
+ fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
|
67
|
+
+ if (fd < 0)
|
68
|
+
+ return;
|
69
|
+
+ nlm.nlmsg_len = NLMSG_LENGTH (size);
|
70
|
+
+ nlm.nlmsg_type = AUDIT_USER_TTY;
|
71
|
+
+ nlm.nlmsg_flags = NLM_F_REQUEST;
|
72
|
+
+ nlm.nlmsg_seq = 0;
|
73
|
+
+ nlm.nlmsg_pid = 0;
|
74
|
+
+ iov[0].iov_base = &nlm;
|
75
|
+
+ iov[0].iov_len = sizeof (nlm);
|
76
|
+
+ iov[1].iov_base = string;
|
77
|
+
+ iov[1].iov_len = size;
|
78
|
+
+ addr.nl_family = AF_NETLINK;
|
79
|
+
+ addr.nl_pad = 0;
|
80
|
+
+ addr.nl_pid = 0;
|
81
|
+
+ addr.nl_groups = 0;
|
82
|
+
+ msg.msg_name = &addr;
|
83
|
+
+ msg.msg_namelen = sizeof (addr);
|
84
|
+
+ msg.msg_iov = iov;
|
85
|
+
+ msg.msg_iovlen = 2;
|
86
|
+
+ msg.msg_control = NULL;
|
87
|
+
+ msg.msg_controllen = 0;
|
88
|
+
+ msg.msg_flags = 0;
|
89
|
+
+ (void)sendmsg (fd, &msg, 0);
|
90
|
+
+ close (fd);
|
91
|
+
+}
|
92
|
+
+#endif
|
93
|
+
+
|
94
|
+
/* Read a line of input. Prompt with PROMPT. An empty PROMPT means
|
95
|
+
none. A return value of NULL means that EOF was encountered. */
|
96
|
+
char *
|
97
|
+
@@ -352,6 +399,11 @@ readline (prompt)
|
98
|
+
RL_SETSTATE (RL_STATE_CALLBACK);
|
99
|
+
#endif
|
100
|
+
|
101
|
+
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
102
|
+
+ if (value != NULL)
|
103
|
+
+ audit_tty (value);
|
104
|
+
+#endif
|
105
|
+
+
|
106
|
+
return (value);
|
107
|
+
}
|
108
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h
|
2
|
+
--- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100
|
3
|
+
+++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100
|
4
|
+
|
5
|
+
sshd and source the .bashrc if so (like the rshd behavior). This checks
|
6
|
+
for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
|
7
|
+
which can be fooled under certain not-uncommon circumstances. */
|
8
|
+
-/* #define SSH_SOURCE_BASHRC */
|
9
|
+
+#define SSH_SOURCE_BASHRC
|
10
|
+
|
11
|
+
/* Define if you want the case-capitalizing operators (~[~]) and the
|
12
|
+
`capcase' variable attribute (declare -c). */
|
@@ -0,0 +1,154 @@
|
|
1
|
+
diff -up bash-4.0/execute_cmd.c.nobits bash-4.0/execute_cmd.c
|
2
|
+
--- bash-4.0/execute_cmd.c.nobits 2009-08-11 11:53:38.000000000 +0200
|
3
|
+
+++ bash-4.0/execute_cmd.c 2009-08-14 16:18:18.000000000 +0200
|
4
|
+
@@ -4747,6 +4747,7 @@ shell_execve (command, args, env)
|
5
|
+
&& memcmp (sample, ELFMAG, SELFMAG) == 0)
|
6
|
+
{
|
7
|
+
off_t offset = -1;
|
8
|
+
+ int dynamic_nobits = 0;
|
9
|
+
|
10
|
+
/* It is an ELF file. Now determine whether it is dynamically
|
11
|
+
linked and if yes, get the offset of the interpreter
|
12
|
+
@@ -4756,13 +4757,61 @@ shell_execve (command, args, env)
|
13
|
+
{
|
14
|
+
Elf32_Ehdr ehdr;
|
15
|
+
Elf32_Phdr *phdr;
|
16
|
+
- int nphdr;
|
17
|
+
+ Elf32_Shdr *shdr;
|
18
|
+
+ int nphdr, nshdr;
|
19
|
+
|
20
|
+
/* We have to copy the data since the sample buffer
|
21
|
+
might not be aligned correctly to be accessed as
|
22
|
+
an Elf32_Ehdr struct. */
|
23
|
+
memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
24
|
+
|
25
|
+
+ nshdr = ehdr.e_shnum;
|
26
|
+
+ shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
27
|
+
+
|
28
|
+
+ if (shdr != NULL)
|
29
|
+
+ {
|
30
|
+
+#ifdef HAVE_PREAD
|
31
|
+
+ sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
32
|
+
+ ehdr.e_shoff);
|
33
|
+
+#else
|
34
|
+
+ if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
35
|
+
+ sample_len = read (fd, shdr,
|
36
|
+
+ nshdr * ehdr.e_shentsize);
|
37
|
+
+ else
|
38
|
+
+ sample_len = -1;
|
39
|
+
+#endif
|
40
|
+
+ if (sample_len == nshdr * ehdr.e_shentsize)
|
41
|
+
+ {
|
42
|
+
+ char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
|
43
|
+
+ if (strings != NULL)
|
44
|
+
+ {
|
45
|
+
+#ifdef HAVE_PREAD
|
46
|
+
+ sample_len = pread (fd, strings,
|
47
|
+
+ shdr[ehdr.e_shstrndx].sh_size,
|
48
|
+
+ shdr[ehdr.e_shstrndx].sh_offset);
|
49
|
+
+#else
|
50
|
+
+ if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
|
51
|
+
+ SEEK_SET) != -1)
|
52
|
+
+ sample_len = read (fd, strings,
|
53
|
+
+ shdr[ehdr.e_shstrndx].sh_size);
|
54
|
+
+ else
|
55
|
+
+ sample_len = -1;
|
56
|
+
+#endif
|
57
|
+
+ if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
|
58
|
+
+ while (nshdr-- > 0)
|
59
|
+
+ if (strcmp (strings + shdr[nshdr].sh_name,
|
60
|
+
+ ".interp") == 0 &&
|
61
|
+
+ shdr[nshdr].sh_type == SHT_NOBITS)
|
62
|
+
+ {
|
63
|
+
+ dynamic_nobits++;
|
64
|
+
+ break;
|
65
|
+
+ }
|
66
|
+
+ free (strings);
|
67
|
+
+ }
|
68
|
+
+ }
|
69
|
+
+ free (shdr);
|
70
|
+
+ }
|
71
|
+
+
|
72
|
+
nphdr = ehdr.e_phnum;
|
73
|
+
phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
74
|
+
if (phdr != NULL)
|
75
|
+
@@ -4792,13 +4841,60 @@ shell_execve (command, args, env)
|
76
|
+
{
|
77
|
+
Elf64_Ehdr ehdr;
|
78
|
+
Elf64_Phdr *phdr;
|
79
|
+
- int nphdr;
|
80
|
+
+ Elf64_Shdr *shdr;
|
81
|
+
+ int nphdr, nshdr;
|
82
|
+
|
83
|
+
/* We have to copy the data since the sample buffer
|
84
|
+
might not be aligned correctly to be accessed as
|
85
|
+
an Elf64_Ehdr struct. */
|
86
|
+
memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
87
|
+
|
88
|
+
+ nshdr = ehdr.e_shnum;
|
89
|
+
+ shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
90
|
+
+ if (shdr != NULL)
|
91
|
+
+ {
|
92
|
+
+#ifdef HAVE_PREAD
|
93
|
+
+ sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
94
|
+
+ ehdr.e_shoff);
|
95
|
+
+#else
|
96
|
+
+ if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
97
|
+
+ sample_len = read (fd, shdr,
|
98
|
+
+ nshdr * ehdr.e_shentsize);
|
99
|
+
+ else
|
100
|
+
+ sample_len = -1;
|
101
|
+
+#endif
|
102
|
+
+ if (sample_len == nshdr * ehdr.e_shentsize)
|
103
|
+
+ {
|
104
|
+
+ char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
|
105
|
+
+ if (strings != NULL)
|
106
|
+
+ {
|
107
|
+
+#ifdef HAVE_PREAD
|
108
|
+
+ sample_len = pread (fd, strings,
|
109
|
+
+ shdr[ehdr.e_shstrndx].sh_size,
|
110
|
+
+ shdr[ehdr.e_shstrndx].sh_offset);
|
111
|
+
+#else
|
112
|
+
+ if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
|
113
|
+
+ SEEK_SET) != -1)
|
114
|
+
+ sample_len = read (fd, strings,
|
115
|
+
+ shdr[ehdr.e_shstrndx].sh_size);
|
116
|
+
+ else
|
117
|
+
+ sample_len = -1;
|
118
|
+
+#endif
|
119
|
+
+ if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
|
120
|
+
+ while (nshdr-- > 0)
|
121
|
+
+ if (strcmp (strings + shdr[nshdr].sh_name,
|
122
|
+
+ ".interp") == 0 &&
|
123
|
+
+ shdr[nshdr].sh_type == SHT_NOBITS)
|
124
|
+
+ {
|
125
|
+
+ dynamic_nobits++;
|
126
|
+
+ break;
|
127
|
+
+ }
|
128
|
+
+ free (strings);
|
129
|
+
+ }
|
130
|
+
+ }
|
131
|
+
+ free (shdr);
|
132
|
+
+ }
|
133
|
+
+
|
134
|
+
nphdr = ehdr.e_phnum;
|
135
|
+
phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
136
|
+
if (phdr != NULL)
|
137
|
+
@@ -4858,8 +4954,15 @@ shell_execve (command, args, env)
|
138
|
+
{
|
139
|
+
close (fd);
|
140
|
+
errno = i;
|
141
|
+
- sys_error ("%s: %s: bad ELF interpreter", command,
|
142
|
+
- interp);
|
143
|
+
+ if (dynamic_nobits > 0)
|
144
|
+
+ {
|
145
|
+
+ sys_error ("%s: bad ELF interpreter", command);
|
146
|
+
+ }
|
147
|
+
+ else
|
148
|
+
+ {
|
149
|
+
+ sys_error ("%s: %s: bad ELF interpreter", command,
|
150
|
+
+ interp);
|
151
|
+
+ }
|
152
|
+
free (interp);
|
153
|
+
return (EX_NOEXEC);
|
154
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h
|
2
|
+
--- bash-4.1/config-top.h.broken_pipe 2011-01-06 18:01:30.000000000 +0100
|
3
|
+
+++ bash-4.1/config-top.h 2011-01-06 18:02:14.000000000 +0100
|
4
|
+
|
5
|
+
/* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins
|
6
|
+
like `echo' and `printf' to report errors when output does not succeed
|
7
|
+
due to EPIPE. */
|
8
|
+
-/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
|
9
|
+
+#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS
|
10
|
+
|
11
|
+
/* The default value of the PATH variable. */
|
12
|
+
#ifndef DEFAULT_PATH_VALUE
|
@@ -0,0 +1,30 @@
|
|
1
|
+
diff -pruN bash-4.1/jobs.c bash-4.1.patched/jobs.c
|
2
|
+
--- bash-4.1/jobs.c 2009-11-30 03:42:05.000000000 +0530
|
3
|
+
+++ bash-4.1.patched/jobs.c 2012-03-06 16:44:15.706595703 +0530
|
4
|
+
@@ -3037,6 +3037,7 @@ waitchld (wpid, block)
|
5
|
+
PROCESS *child;
|
6
|
+
pid_t pid;
|
7
|
+
int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
|
8
|
+
+ int called_from_sighand = sigchld;
|
9
|
+
static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */
|
10
|
+
|
11
|
+
call_set_current = children_exited = 0;
|
12
|
+
@@ -3161,7 +3162,17 @@ waitchld (wpid, block)
|
13
|
+
longjmp (wait_intr_buf, 1);
|
14
|
+
}
|
15
|
+
|
16
|
+
- run_sigchld_trap (children_exited);
|
17
|
+
+ /* Queue up the trap handler if we're called directly from within the
|
18
|
+
+ signal handler. */
|
19
|
+
+ if (called_from_sighand)
|
20
|
+
+ {
|
21
|
+
+ int i = children_exited;
|
22
|
+
+ interrupt_immediately = 0;
|
23
|
+
+ while (i--)
|
24
|
+
+ trap_handler (SIGCHLD);
|
25
|
+
+ }
|
26
|
+
+ else
|
27
|
+
+ run_sigchld_trap (children_exited);
|
28
|
+
}
|
29
|
+
|
30
|
+
/* We have successfully recorded the useful information about this process
|
@@ -0,0 +1,24 @@
|
|
1
|
+
diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in
|
2
|
+
--- bash-4.1/examples/loadables/Makefile.in.examples 2010-06-22 16:20:02.000000000 +0200
|
3
|
+
+++ bash-4.1/examples/loadables/Makefile.in 2010-06-22 16:20:41.000000000 +0200
|
4
|
+
@@ -43,7 +43,7 @@ host_os = @host_os@
|
5
|
+
host_cpu = @host_cpu@
|
6
|
+
host_vendor = @host_vendor@
|
7
|
+
|
8
|
+
-CFLAGS = @CFLAGS@
|
9
|
+
+CFLAGS = -O2 -g
|
10
|
+
LOCAL_CFLAGS = @LOCAL_CFLAGS@
|
11
|
+
DEFS = @DEFS@
|
12
|
+
LOCAL_DEFS = @LOCAL_DEFS@
|
13
|
+
diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in
|
14
|
+
--- bash-4.1/examples/loadables/perl/Makefile.in.examples 2010-06-22 16:20:46.000000000 +0200
|
15
|
+
+++ bash-4.1/examples/loadables/perl/Makefile.in 2010-06-22 16:21:04.000000000 +0200
|
16
|
+
@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@
|
17
|
+
|
18
|
+
PERL5 = perl5
|
19
|
+
|
20
|
+
-CFLAGS = @CFLAGS@
|
21
|
+
+CFLAGS = -O2 -g
|
22
|
+
|
23
|
+
#
|
24
|
+
# These values are generated for configure by ${topdir}/support/shobj-conf.
|
@@ -0,0 +1,46 @@
|
|
1
|
+
Only in bash-4.1: _patchlevel
|
2
|
+
diff -rup bash-4.1.orig/trap.c bash-4.1/trap.c
|
3
|
+
--- bash-4.1.orig/trap.c 2013-05-14 13:58:06.224000564 +0900
|
4
|
+
+++ bash-4.1/trap.c 2013-06-26 16:59:42.968001502 +0900
|
5
|
+
@@ -269,6 +269,9 @@ run_pending_traps ()
|
6
|
+
if (catch_flag == 0) /* simple optimization */
|
7
|
+
return;
|
8
|
+
|
9
|
+
+ if (running_trap > 0)
|
10
|
+
+ return; /* no recursive trap invocations */
|
11
|
+
+
|
12
|
+
catch_flag = 0;
|
13
|
+
|
14
|
+
/* Preserve $? when running trap. */
|
15
|
+
@@ -294,6 +297,8 @@ run_pending_traps ()
|
16
|
+
# endif
|
17
|
+
#endif /* HAVE_POSIX_SIGNALS */
|
18
|
+
|
19
|
+
+ running_trap = sig + 1;
|
20
|
+
+
|
21
|
+
if (sig == SIGINT)
|
22
|
+
{
|
23
|
+
run_interrupt_trap ();
|
24
|
+
@@ -338,7 +343,14 @@ run_pending_traps ()
|
25
|
+
save_subst_varlist = subst_assign_varlist;
|
26
|
+
subst_assign_varlist = 0;
|
27
|
+
|
28
|
+
+#if defined (JOB_CONTROL)
|
29
|
+
+ save_pipeline (1); /* XXX only provides one save level */
|
30
|
+
+#endif
|
31
|
+
parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
|
32
|
+
+#if defined (JOB_CONTROL)
|
33
|
+
+ restore_pipeline (1);
|
34
|
+
+#endif
|
35
|
+
+
|
36
|
+
restore_token_state (token_state);
|
37
|
+
free (token_state);
|
38
|
+
|
39
|
+
@@ -346,6 +358,7 @@ run_pending_traps ()
|
40
|
+
}
|
41
|
+
|
42
|
+
pending_traps[sig] = 0;
|
43
|
+
+ running_trap = 0;
|
44
|
+
|
45
|
+
#if defined (HAVE_POSIX_SIGNALS)
|
46
|
+
sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
|
@@ -0,0 +1,24 @@
|
|
1
|
+
diff --git a/braces.c b/braces.c
|
2
|
+
index 2febed7..61c1ab1 100644
|
3
|
+
--- a/braces.c
|
4
|
+
+++ b/braces.c
|
5
|
+
@@ -529,6 +529,11 @@ brace_gobbler (text, tlen, indx, satisfy)
|
6
|
+
{
|
7
|
+
if (c == quoted)
|
8
|
+
quoted = 0;
|
9
|
+
+#if defined (SHELL)
|
10
|
+
+ /* The shell allows quoted command substitutions */
|
11
|
+
+ if (quoted == '"' && c == '$' && text[i+1] == '(') /*)*/
|
12
|
+
+ goto comsub;
|
13
|
+
+#endif
|
14
|
+
ADVANCE_CHAR (text, tlen, i);
|
15
|
+
continue;
|
16
|
+
}
|
17
|
+
@@ -551,6 +556,7 @@ brace_gobbler (text, tlen, indx, satisfy)
|
18
|
+
/* Pass new-style command and process substitutions through unchanged. */
|
19
|
+
if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(') /* ) */
|
20
|
+
{
|
21
|
+
+comsub:
|
22
|
+
si = i + 2;
|
23
|
+
t = extract_command_subst (text, &si, 0);
|
24
|
+
i = si;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
diff -up bash-4.2/parse.y.old bash-4.2/parse.y
|
2
|
+
--- bash-4.2/parse.y.old 2015-05-18 13:04:30.341494305 +0200
|
3
|
+
+++ bash-4.2/parse.y 2015-05-18 13:05:18.245509202 +0200
|
4
|
+
@@ -3693,6 +3693,17 @@ eof_error:
|
5
|
+
}
|
6
|
+
else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
|
7
|
+
; /* don't modify LEX_RESWDOK if we're starting a comment */
|
8
|
+
+ /* Allow `do' followed by space, tab, or newline to preserve the
|
9
|
+
+ RESWDOK flag, but reset the reserved word length counter so we
|
10
|
+
+ can read another one. */
|
11
|
+
+ else if MBTEST(((tflags & LEX_INCASE) == 0) &&
|
12
|
+
+ (isblank(ch) || ch == '\n') &&
|
13
|
+
+ lex_rwlen == 2 &&
|
14
|
+
+ STREQN (ret + retind - 2, "do", 2))
|
15
|
+
+{
|
16
|
+
+/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', found \"do\"", line_number, ch);*/
|
17
|
+
+ lex_rwlen = 0;
|
18
|
+
+}
|
19
|
+
else if MBTEST((tflags & LEX_INCASE) && ch != '\n')
|
20
|
+
/* If we can read a reserved word and we're in case, we're at the
|
21
|
+
point where we can read a new pattern list or an esac. We
|
@@ -0,0 +1,87 @@
|
|
1
|
+
diff -up bash-4.2/builtins/evalfile.c.old bash-4.2/builtins/evalfile.c
|
2
|
+
--- bash-4.2/builtins/evalfile.c.old 2015-05-14 20:45:31.402793505 +0200
|
3
|
+
+++ bash-4.2/builtins/evalfile.c 2015-05-14 20:45:47.632794791 +0200
|
4
|
+
@@ -317,6 +317,23 @@ maybe_execute_file (fname, force_noninte
|
5
|
+
return result;
|
6
|
+
}
|
7
|
+
|
8
|
+
+int
|
9
|
+
+force_execute_file (fname, force_noninteractive)
|
10
|
+
+ const char *fname;
|
11
|
+
+ int force_noninteractive;
|
12
|
+
+{
|
13
|
+
+ char *filename;
|
14
|
+
+ int result, flags;
|
15
|
+
+
|
16
|
+
+ filename = bash_tilde_expand (fname, 0);
|
17
|
+
+ flags = 0;
|
18
|
+
+ if (force_noninteractive)
|
19
|
+
+ flags |= FEVAL_NONINT;
|
20
|
+
+ result = _evalfile (filename, flags);
|
21
|
+
+ free (filename);
|
22
|
+
+ return result;
|
23
|
+
+}
|
24
|
+
+
|
25
|
+
#if defined (HISTORY)
|
26
|
+
int
|
27
|
+
fc_execute_file (filename)
|
28
|
+
diff -up bash-4.2/configure.in.old bash-4.2/configure.in
|
29
|
+
--- bash-4.2/configure.in.old 2015-05-14 21:27:20.882449456 +0200
|
30
|
+
+++ bash-4.2/configure.in 2015-05-14 21:19:25.654612738 +0200
|
31
|
+
@@ -149,7 +149,7 @@ fi
|
32
|
+
fi
|
33
|
+
|
34
|
+
if test -z "${DEBUGGER_START_FILE}"; then
|
35
|
+
- DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
|
36
|
+
+ DEBUGGER_START_FILE='/usr/share/bashdb/bashdb-main.inc'
|
37
|
+
fi
|
38
|
+
|
39
|
+
dnl optional shell features in config.h.in
|
40
|
+
diff -up bash-4.2/shell.c.old bash-4.2/shell.c
|
41
|
+
--- bash-4.2/shell.c.old 2015-05-14 20:42:54.379781066 +0200
|
42
|
+
+++ bash-4.2/shell.c 2015-05-14 20:43:04.966781904 +0200
|
43
|
+
@@ -1373,12 +1373,19 @@ start_debugger ()
|
44
|
+
{
|
45
|
+
#if defined (DEBUGGER) && defined (DEBUGGER_START_FILE)
|
46
|
+
int old_errexit;
|
47
|
+
+ int r;
|
48
|
+
|
49
|
+
old_errexit = exit_immediately_on_error;
|
50
|
+
exit_immediately_on_error = 0;
|
51
|
+
|
52
|
+
- maybe_execute_file (DEBUGGER_START_FILE, 1);
|
53
|
+
- function_trace_mode = 1;
|
54
|
+
+ r = force_execute_file (DEBUGGER_START_FILE, 1);
|
55
|
+
+ if (r < 0)
|
56
|
+
+ {
|
57
|
+
+ internal_warning ("cannot start debugger; debugging mode disabled");
|
58
|
+
+ debugging_mode = function_trace_mode = 0;
|
59
|
+
+ }
|
60
|
+
+ else
|
61
|
+
+ function_trace_mode = 1;
|
62
|
+
|
63
|
+
exit_immediately_on_error += old_errexit;
|
64
|
+
#endif
|
65
|
+
diff -up bash-4.2/builtins/evalfile.c.old bash-4.2/builtins/evalfile.c
|
66
|
+
--- bash-4.2/builtins/evalfile.c.old 2015-05-15 00:52:01.357266353 +0200
|
67
|
+
+++ bash-4.2/builtins/evalfile.c 2015-05-15 00:52:08.734263236 +0200
|
68
|
+
@@ -125,7 +125,7 @@ file_error_and_exit:
|
69
|
+
}
|
70
|
+
|
71
|
+
return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE
|
72
|
+
- : ((errno == ENOENT) ? 0 : -1));
|
73
|
+
+ : ((errno == ENOENT && (flags & FEVAL_ENOENTOK) != 0) ? 0 : -1));
|
74
|
+
}
|
75
|
+
|
76
|
+
errfunc = ((flags & FEVAL_BUILTIN) ? builtin_error : internal_error);
|
77
|
+
diff -up bash-4.2/builtins/common.h.old bash-4.2/builtins/common.h
|
78
|
+
--- bash-4.2/builtins/common.h.old 2015-05-15 00:52:01.357266353 +0200
|
79
|
+
+++ bash-4.2/builtins/common.h 2015-05-15 00:52:08.734263236 +0200
|
80
|
+
|
81
|
+
|
82
|
+
/* Functions from evalfile.c */
|
83
|
+
extern int maybe_execute_file __P((const char *, int));
|
84
|
+
+extern int force_execute_file __P((const char *, int));
|
85
|
+
extern int source_file __P((const char *, int));
|
86
|
+
extern int fc_execute_file __P((const char *));
|
87
|
+
|
@@ -0,0 +1,99 @@
|
|
1
|
+
diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c
|
2
|
+
--- bash-4.2/execute_cmd.c.coverity 2011-02-24 13:04:35.000000000 +0100
|
3
|
+
+++ bash-4.2/execute_cmd.c 2011-02-24 13:49:13.000000000 +0100
|
4
|
+
@@ -5036,7 +5036,7 @@ shell_execve (command, args, env)
|
5
|
+
Elf32_Ehdr ehdr;
|
6
|
+
Elf32_Phdr *phdr;
|
7
|
+
Elf32_Shdr *shdr;
|
8
|
+
- int nphdr, nshdr;
|
9
|
+
+ Elf32_Half nphdr, nshdr;
|
10
|
+
|
11
|
+
/* We have to copy the data since the sample buffer
|
12
|
+
might not be aligned correctly to be accessed as
|
13
|
+
@@ -5044,12 +5044,12 @@ shell_execve (command, args, env)
|
14
|
+
memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
15
|
+
|
16
|
+
nshdr = ehdr.e_shnum;
|
17
|
+
- shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
18
|
+
+ shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
|
19
|
+
|
20
|
+
if (shdr != NULL)
|
21
|
+
{
|
22
|
+
#ifdef HAVE_PREAD
|
23
|
+
- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
24
|
+
+ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
|
25
|
+
ehdr.e_shoff);
|
26
|
+
#else
|
27
|
+
if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
28
|
+
@@ -5091,11 +5091,11 @@ shell_execve (command, args, env)
|
29
|
+
}
|
30
|
+
|
31
|
+
nphdr = ehdr.e_phnum;
|
32
|
+
- phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
33
|
+
+ phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
|
34
|
+
if (phdr != NULL)
|
35
|
+
{
|
36
|
+
#ifdef HAVE_PREAD
|
37
|
+
- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
38
|
+
+ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
|
39
|
+
ehdr.e_phoff);
|
40
|
+
#else
|
41
|
+
if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
42
|
+
@@ -5120,7 +5120,7 @@ shell_execve (command, args, env)
|
43
|
+
Elf64_Ehdr ehdr;
|
44
|
+
Elf64_Phdr *phdr;
|
45
|
+
Elf64_Shdr *shdr;
|
46
|
+
- int nphdr, nshdr;
|
47
|
+
+ Elf32_Half nphdr, nshdr;
|
48
|
+
|
49
|
+
/* We have to copy the data since the sample buffer
|
50
|
+
might not be aligned correctly to be accessed as
|
51
|
+
@@ -5128,11 +5128,11 @@ shell_execve (command, args, env)
|
52
|
+
memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
53
|
+
|
54
|
+
nshdr = ehdr.e_shnum;
|
55
|
+
- shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
56
|
+
+ shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
|
57
|
+
if (shdr != NULL)
|
58
|
+
{
|
59
|
+
#ifdef HAVE_PREAD
|
60
|
+
- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
61
|
+
+ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
|
62
|
+
ehdr.e_shoff);
|
63
|
+
#else
|
64
|
+
if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
65
|
+
@@ -5174,11 +5174,11 @@ shell_execve (command, args, env)
|
66
|
+
}
|
67
|
+
|
68
|
+
nphdr = ehdr.e_phnum;
|
69
|
+
- phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
70
|
+
+ phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
|
71
|
+
if (phdr != NULL)
|
72
|
+
{
|
73
|
+
#ifdef HAVE_PREAD
|
74
|
+
- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
75
|
+
+ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
|
76
|
+
ehdr.e_phoff);
|
77
|
+
#else
|
78
|
+
if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
79
|
+
@@ -5200,8 +5200,8 @@ shell_execve (command, args, env)
|
80
|
+
|
81
|
+
if (offset != -1)
|
82
|
+
{
|
83
|
+
- size_t maxlen = 0;
|
84
|
+
- size_t actlen = 0;
|
85
|
+
+ ssize_t maxlen = 0;
|
86
|
+
+ ssize_t actlen = 0;
|
87
|
+
char *interp = NULL;
|
88
|
+
|
89
|
+
do
|
90
|
+
@@ -5250,7 +5250,8 @@ shell_execve (command, args, env)
|
91
|
+
}
|
92
|
+
#endif
|
93
|
+
#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
94
|
+
- close (fd);
|
95
|
+
+ if (fd >= 0)
|
96
|
+
+ close (fd);
|
97
|
+
#endif
|
98
|
+
errno = i;
|
99
|
+
file_error (command);
|
@@ -0,0 +1,12 @@
|
|
1
|
+
*** ../bash-20140912/parse.y 2014-08-26 15:09:42.000000000 -0400
|
2
|
+
--- parse.y 2014-09-24 22:47:28.000000000 -0400
|
3
|
+
***************
|
4
|
+
|
5
|
+
|
6
|
+
word_desc_to_read = (WORD_DESC *)NULL;
|
7
|
+
|
8
|
+
+ eol_ungetc_lookahead = 0;
|
9
|
+
+
|
10
|
+
current_token = '\n'; /* XXX */
|
11
|
+
last_read_token = '\n';
|
12
|
+
|
@@ -0,0 +1,147 @@
|
|
1
|
+
--- ../bash-4.2-orig/variables.c 2014-09-25 13:07:59.313209541 +0200
|
2
|
+
+++ variables.c 2014-09-25 13:15:29.869420719 +0200
|
3
|
+
|
4
|
+
static void propagate_temp_var __P((PTR_T));
|
5
|
+
static void dispose_temporary_env __P((sh_free_func_t *));
|
6
|
+
|
7
|
+
-static inline char *mk_env_string __P((const char *, const char *));
|
8
|
+
+static inline char *mk_env_string __P((const char *, const char *, int));
|
9
|
+
static char **make_env_array_from_var_list __P((SHELL_VAR **));
|
10
|
+
static char **make_var_export_array __P((VAR_CONTEXT *));
|
11
|
+
static char **make_func_export_array __P((void));
|
12
|
+
|
13
|
+
#endif
|
14
|
+
}
|
15
|
+
|
16
|
+
+/* Prefix and suffix for environment variable names which contain
|
17
|
+
+ shell functions. */
|
18
|
+
+#define FUNCDEF_PREFIX "BASH_FUNC_"
|
19
|
+
+#define FUNCDEF_PREFIX_LEN (strlen (FUNCDEF_PREFIX))
|
20
|
+
+#define FUNCDEF_SUFFIX "()"
|
21
|
+
+#define FUNCDEF_SUFFIX_LEN (strlen (FUNCDEF_SUFFIX))
|
22
|
+
+
|
23
|
+
+
|
24
|
+
/* Initialize the shell variables from the current environment.
|
25
|
+
If PRIVMODE is nonzero, don't import functions from ENV or
|
26
|
+
parse $SHELLOPTS. */
|
27
|
+
|
28
|
+
|
29
|
+
/* If exported function, define it now. Don't import functions from
|
30
|
+
the environment in privileged mode. */
|
31
|
+
- if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
|
32
|
+
- {
|
33
|
+
- string_length = strlen (string);
|
34
|
+
- temp_string = (char *)xmalloc (3 + string_length + char_index);
|
35
|
+
+ if (privmode == 0 && read_but_dont_execute == 0
|
36
|
+
+ && STREQN (FUNCDEF_PREFIX, name, FUNCDEF_PREFIX_LEN)
|
37
|
+
+ && STREQ (name + char_index - FUNCDEF_SUFFIX_LEN, FUNCDEF_SUFFIX)
|
38
|
+
+ && STREQN ("() {", string, 4))
|
39
|
+
+ {
|
40
|
+
+ size_t name_length
|
41
|
+
+ = char_index - (FUNCDEF_PREFIX_LEN + FUNCDEF_SUFFIX_LEN);
|
42
|
+
+ char *temp_name = name + FUNCDEF_PREFIX_LEN;
|
43
|
+
+ /* Temporarily remove the suffix. */
|
44
|
+
+ temp_name[name_length] = '\0';
|
45
|
+
|
46
|
+
- strcpy (temp_string, name);
|
47
|
+
- temp_string[char_index] = ' ';
|
48
|
+
- strcpy (temp_string + char_index + 1, string);
|
49
|
+
+ string_length = strlen (string);
|
50
|
+
+ temp_string = (char *)xmalloc (name_length + 1 + string_length + 1);
|
51
|
+
+ memcpy (temp_string, temp_name, name_length);
|
52
|
+
+ temp_string[name_length] = ' ';
|
53
|
+
+ memcpy (temp_string + name_length + 1, string, string_length + 1);
|
54
|
+
|
55
|
+
/* Don't import function names that are invalid identifiers from the
|
56
|
+
environment, though we still allow them to be defined as shell
|
57
|
+
variables. */
|
58
|
+
- if (legal_identifier (name))
|
59
|
+
- parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
|
60
|
+
+ if (legal_identifier (temp_name))
|
61
|
+
+ parse_and_execute (temp_string, temp_name,
|
62
|
+
+ SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
|
63
|
+
|
64
|
+
- if (temp_var = find_function (name))
|
65
|
+
+ if (temp_var = find_function (temp_name))
|
66
|
+
{
|
67
|
+
VSETATTR (temp_var, (att_exported|att_imported));
|
68
|
+
array_needs_making = 1;
|
69
|
+
}
|
70
|
+
else
|
71
|
+
report_error (_("error importing function definition for `%s'"), name);
|
72
|
+
+
|
73
|
+
+ /* Restore the original suffix. */
|
74
|
+
+ temp_name[name_length] = FUNCDEF_SUFFIX[0];
|
75
|
+
}
|
76
|
+
#if defined (ARRAY_VARS)
|
77
|
+
# if 0
|
78
|
+
|
79
|
+
var->context = variable_context; /* XXX */
|
80
|
+
|
81
|
+
INVALIDATE_EXPORTSTR (var);
|
82
|
+
- var->exportstr = mk_env_string (name, value);
|
83
|
+
+ var->exportstr = mk_env_string (name, value, 0);
|
84
|
+
|
85
|
+
array_needs_making = 1;
|
86
|
+
|
87
|
+
|
88
|
+
/* */
|
89
|
+
/* **************************************************************** */
|
90
|
+
|
91
|
+
+/* Returns the string NAME=VALUE if !FUNCTIONP or if VALUE == NULL (in
|
92
|
+
+ which case it is treated as empty). Otherwise, decorate NAME with
|
93
|
+
+ FUNCDEF_PREFIX and FUNCDEF_SUFFIX, and return a string of the form
|
94
|
+
+ FUNCDEF_PREFIX NAME FUNCDEF_SUFFIX = VALUE (without spaces). */
|
95
|
+
static inline char *
|
96
|
+
-mk_env_string (name, value)
|
97
|
+
+mk_env_string (name, value, functionp)
|
98
|
+
const char *name, *value;
|
99
|
+
+ int functionp;
|
100
|
+
{
|
101
|
+
- int name_len, value_len;
|
102
|
+
- char *p;
|
103
|
+
+ size_t name_len, value_len;
|
104
|
+
+ char *p, *q;
|
105
|
+
|
106
|
+
name_len = strlen (name);
|
107
|
+
value_len = STRLEN (value);
|
108
|
+
- p = (char *)xmalloc (2 + name_len + value_len);
|
109
|
+
- strcpy (p, name);
|
110
|
+
- p[name_len] = '=';
|
111
|
+
+ if (functionp && value != NULL)
|
112
|
+
+ {
|
113
|
+
+ p = (char *)xmalloc (FUNCDEF_PREFIX_LEN + name_len + FUNCDEF_SUFFIX_LEN
|
114
|
+
+ + 1 + value_len + 1);
|
115
|
+
+ q = p;
|
116
|
+
+ memcpy (q, FUNCDEF_PREFIX, FUNCDEF_PREFIX_LEN);
|
117
|
+
+ q += FUNCDEF_PREFIX_LEN;
|
118
|
+
+ memcpy (q, name, name_len);
|
119
|
+
+ q += name_len;
|
120
|
+
+ memcpy (q, FUNCDEF_SUFFIX, FUNCDEF_SUFFIX_LEN);
|
121
|
+
+ q += FUNCDEF_SUFFIX_LEN;
|
122
|
+
+ }
|
123
|
+
+ else
|
124
|
+
+ {
|
125
|
+
+ p = (char *)xmalloc (name_len + 1 + value_len + 1);
|
126
|
+
+ memcpy (p, name, name_len);
|
127
|
+
+ q = p + name_len;
|
128
|
+
+ }
|
129
|
+
+ q[0] = '=';
|
130
|
+
if (value && *value)
|
131
|
+
- strcpy (p + name_len + 1, value);
|
132
|
+
+ memcpy (q + 1, value, value_len + 1);
|
133
|
+
else
|
134
|
+
- p[name_len + 1] = '\0';
|
135
|
+
+ q[1] = '\0';
|
136
|
+
return (p);
|
137
|
+
}
|
138
|
+
|
139
|
+
@@ -3489,7 +3530,7 @@
|
140
|
+
/* Gee, I'd like to get away with not using savestring() if we're
|
141
|
+
using the cached exportstr... */
|
142
|
+
list[list_index] = USE_EXPORTSTR ? savestring (value)
|
143
|
+
- : mk_env_string (var->name, value);
|
144
|
+
+ : mk_env_string (var->name, value, function_p (var));
|
145
|
+
|
146
|
+
if (USE_EXPORTSTR == 0)
|
147
|
+
SAVE_EXPORTSTR (var, list[list_index]);
|
@@ -0,0 +1,83 @@
|
|
1
|
+
--- ../bash-4.2-orig/parse.y 2014-09-25 13:07:59.218209276 +0200
|
2
|
+
+++ parse.y 2014-09-25 15:26:52.813159810 +0200
|
3
|
+
|
4
|
+
|
5
|
+
/* Variables to manage the task of reading here documents, because we need to
|
6
|
+
defer the reading until after a complete command has been collected. */
|
7
|
+
-static REDIRECT *redir_stack[10];
|
8
|
+
+static REDIRECT **redir_stack;
|
9
|
+
int need_here_doc;
|
10
|
+
|
11
|
+
+/* Pushes REDIR onto redir_stack, resizing it as needed. */
|
12
|
+
+static void
|
13
|
+
+push_redir_stack (REDIRECT *redir)
|
14
|
+
+{
|
15
|
+
+ /* Guard against oveflow. */
|
16
|
+
+ if (need_here_doc + 1 > INT_MAX / sizeof (*redir_stack))
|
17
|
+
+ abort ();
|
18
|
+
+ redir_stack = xrealloc (redir_stack,
|
19
|
+
+ (need_here_doc + 1) * sizeof (*redir_stack));
|
20
|
+
+ redir_stack[need_here_doc++] = redir;
|
21
|
+
+}
|
22
|
+
+
|
23
|
+
/* Where shell input comes from. History expansion is performed on each
|
24
|
+
line when the shell is interactive. */
|
25
|
+
static char *shell_input_line = (char *)NULL;
|
26
|
+
|
27
|
+
source.dest = 0;
|
28
|
+
redir.filename = $2;
|
29
|
+
$$ = make_redirection (source, r_reading_until, redir, 0);
|
30
|
+
- redir_stack[need_here_doc++] = $$;
|
31
|
+
+ push_redir_stack ($$);
|
32
|
+
}
|
33
|
+
| NUMBER LESS_LESS WORD
|
34
|
+
{
|
35
|
+
source.dest = $1;
|
36
|
+
redir.filename = $3;
|
37
|
+
$$ = make_redirection (source, r_reading_until, redir, 0);
|
38
|
+
- redir_stack[need_here_doc++] = $$;
|
39
|
+
+ push_redir_stack ($$);
|
40
|
+
}
|
41
|
+
| REDIR_WORD LESS_LESS WORD
|
42
|
+
{
|
43
|
+
source.filename = $1;
|
44
|
+
redir.filename = $3;
|
45
|
+
$$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
|
46
|
+
- redir_stack[need_here_doc++] = $$;
|
47
|
+
+ push_redir_stack ($$);
|
48
|
+
}
|
49
|
+
| LESS_LESS_MINUS WORD
|
50
|
+
{
|
51
|
+
source.dest = 0;
|
52
|
+
redir.filename = $2;
|
53
|
+
$$ = make_redirection (source, r_deblank_reading_until, redir, 0);
|
54
|
+
- redir_stack[need_here_doc++] = $$;
|
55
|
+
+ push_redir_stack ($$);
|
56
|
+
}
|
57
|
+
| NUMBER LESS_LESS_MINUS WORD
|
58
|
+
{
|
59
|
+
source.dest = $1;
|
60
|
+
redir.filename = $3;
|
61
|
+
$$ = make_redirection (source, r_deblank_reading_until, redir, 0);
|
62
|
+
- redir_stack[need_here_doc++] = $$;
|
63
|
+
+ push_redir_stack ($$);
|
64
|
+
}
|
65
|
+
| REDIR_WORD LESS_LESS_MINUS WORD
|
66
|
+
{
|
67
|
+
source.filename = $1;
|
68
|
+
redir.filename = $3;
|
69
|
+
$$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
|
70
|
+
- redir_stack[need_here_doc++] = $$;
|
71
|
+
+ push_redir_stack ($$);
|
72
|
+
}
|
73
|
+
| LESS_LESS_LESS WORD
|
74
|
+
{
|
75
|
+
|
76
|
+
case CASE:
|
77
|
+
case SELECT:
|
78
|
+
case FOR:
|
79
|
+
- if (word_top < MAX_CASE_NEST)
|
80
|
+
+ if (word_top + 1 < MAX_CASE_NEST)
|
81
|
+
word_top++;
|
82
|
+
word_lineno[word_top] = line_number;
|
83
|
+
break;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
--- bash-4.1/subst.c 2015-04-07 10:00:00.482931289 +0900
|
2
|
+
+++ bash-4.1/subst.c 2015-04-07 10:01:28.258111134 +0900
|
3
|
+
@@ -7039,8 +7039,6 @@
|
4
|
+
|
5
|
+
ret = alloc_word_desc ();
|
6
|
+
ret->word = temp1;
|
7
|
+
- ret = alloc_word_desc ();
|
8
|
+
- ret->word = temp1;
|
9
|
+
if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
|
10
|
+
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
|
11
|
+
return ret;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
--- variables.cold 2015-01-16 13:53:13.817363093 +0100
|
2
|
+
+++ variables.c 2015-01-16 13:57:41.839425969 +0100
|
3
|
+
@@ -366,7 +366,7 @@ initialize_shell_variables (env, privmod
|
4
|
+
/* Don't import function names that are invalid identifiers from the
|
5
|
+
environment, though we still allow them to be defined as shell
|
6
|
+
variables. */
|
7
|
+
- if (legal_identifier (temp_name))
|
8
|
+
+ if (absolute_program (temp_name) == 0 && (posixly_correct == 0 || legal_identifier (temp_name)))
|
9
|
+
parse_and_execute (temp_string, temp_name,
|
10
|
+
SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
|
11
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400
|
2
|
+
--- builtins/common.h 2014-09-12 14:25:47.000000000 -0400
|
3
|
+
***************
|
4
|
+
|
5
|
+
|
6
|
+
#define SEVAL_PARSEONLY 0x020
|
7
|
+
#define SEVAL_NOLONGJMP 0x040
|
8
|
+
+ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */
|
9
|
+
+ #define SEVAL_ONECMD 0x100 /* only allow a single command */
|
10
|
+
|
11
|
+
/* Flags for describe_command, shared between type.def and command.def */
|
12
|
+
*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 -0500
|
13
|
+
--- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400
|
14
|
+
***************
|
15
|
+
|
16
|
+
|
17
|
+
struct fd_bitmap *bitmap;
|
18
|
+
|
19
|
+
+ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
|
20
|
+
+ {
|
21
|
+
+ internal_warning ("%s: ignoring function definition attempt", from_file);
|
22
|
+
+ should_jump_to_top_level = 0;
|
23
|
+
+ last_result = last_command_exit_value = EX_BADUSAGE;
|
24
|
+
+ break;
|
25
|
+
+ }
|
26
|
+
+
|
27
|
+
bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
|
28
|
+
begin_unwind_frame ("pe_dispose");
|
29
|
+
***************
|
30
|
+
|
31
|
+
|
32
|
+
dispose_fd_bitmap (bitmap);
|
33
|
+
discard_unwind_frame ("pe_dispose");
|
34
|
+
+
|
35
|
+
+ if (flags & SEVAL_ONECMD)
|
36
|
+
+ break;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400
|
40
|
+
--- variables.c 2014-09-14 14:23:35.000000000 -0400
|
41
|
+
***************
|
42
|
+
|
43
|
+
strcpy (temp_string + char_index + 1, string);
|
44
|
+
|
45
|
+
! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
|
46
|
+
!
|
47
|
+
! /* Ancient backwards compatibility. Old versions of bash exported
|
48
|
+
! functions like name()=() {...} */
|
49
|
+
! if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
|
50
|
+
! name[char_index - 2] = '\0';
|
51
|
+
|
52
|
+
if (temp_var = find_function (name))
|
53
|
+
|
54
|
+
strcpy (temp_string + char_index + 1, string);
|
55
|
+
|
56
|
+
! /* Don't import function names that are invalid identifiers from the
|
57
|
+
! environment, though we still allow them to be defined as shell
|
58
|
+
! variables. */
|
59
|
+
! if (legal_identifier (name))
|
60
|
+
! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
|
61
|
+
|
62
|
+
if (temp_var = find_function (name))
|
63
|
+
***************
|
64
|
+
|
65
|
+
else
|
66
|
+
report_error (_("error importing function definition for `%s'"), name);
|
67
|
+
-
|
68
|
+
- /* ( */
|
69
|
+
- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
|
70
|
+
- name[char_index - 2] = '('; /* ) */
|
71
|
+
}
|
72
|
+
#if defined (ARRAY_VARS)
|
73
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
diff --git a/doc/bash.1 b/doc/bash.1
|
2
|
+
--- a/doc/bash.1 2010-07-28 08:42:54.000000000 +0200
|
3
|
+
+++ b/doc/bash.1 2010-07-28 08:43:17.000000000 +0200
|
4
|
+
|
5
|
+
.RE
|
6
|
+
.PD
|
7
|
+
.PP
|
8
|
+
-If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
|
9
|
+
-builtin, several extended pattern matching operators are recognized.
|
10
|
+
+Several extended pattern matching operators are recognized.
|
11
|
+
In the following description, a \fIpattern-list\fP is a list of one
|
12
|
+
or more patterns separated by a \fB|\fP.
|
13
|
+
Composite patterns may be formed using one or more of the following
|
14
|
+
|
15
|
+
.TP
|
16
|
+
\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
|
17
|
+
Matches one of the given patterns
|
18
|
+
+.RE
|
19
|
+
+.PD
|
20
|
+
+.PP
|
21
|
+
+If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
|
22
|
+
+builtin, following pattern matching operator is recognized as well:
|
23
|
+
+.sp 1
|
24
|
+
+.PD 0
|
25
|
+
+.RS
|
26
|
+
.TP
|
27
|
+
\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
|
28
|
+
Matches anything except one of the given patterns
|
@@ -0,0 +1,11 @@
|
|
1
|
+
--- a/lib/readline/history.c 2014-05-27 16:55:58.040214069 +0200
|
2
|
+
+++ b/lib/readline/history.c 2014-05-27 16:56:11.243204928 +0200
|
3
|
+
@@ -318,7 +318,7 @@ add_history_time (string)
|
4
|
+
{
|
5
|
+
HIST_ENTRY *hs;
|
6
|
+
|
7
|
+
- if (string == 0)
|
8
|
+
+ if (string == 0 || history_length < 1)
|
9
|
+
return;
|
10
|
+
hs = the_history[history_length - 1];
|
11
|
+
FREE (hs->timestamp);
|
@@ -0,0 +1,35 @@
|
|
1
|
+
--- bash-4.2/redir.c 2015-04-27 23:03:55.663182162 +0200
|
2
|
+
+++ bash-4.2/redir.c 2015-04-27 23:03:13.995181816 +0200
|
3
|
+
@@ -63,6 +63,7 @@ int expanding_redir;
|
4
|
+
|
5
|
+
extern int posixly_correct;
|
6
|
+
extern int last_command_exit_value;
|
7
|
+
+extern int executing_builtin;
|
8
|
+
extern REDIRECT *redirection_undo_list;
|
9
|
+
extern REDIRECT *exec_redirection_undo_list;
|
10
|
+
|
11
|
+
@@ -307,11 +308,23 @@ write_here_string (fd, redirectee)
|
12
|
+
WORD_DESC *redirectee;
|
13
|
+
{
|
14
|
+
char *herestr;
|
15
|
+
- int herelen, n, e;
|
16
|
+
+ int herelen, n, e, old;
|
17
|
+
|
18
|
+
expanding_redir = 1;
|
19
|
+
+ /* Now that we've changed the variable search order to ignore the temp
|
20
|
+
+ environment, see if we need to change the cached IFS values. */
|
21
|
+
+ sv_ifs ("IFS");
|
22
|
+
herestr = expand_string_to_string (redirectee->word, 0);
|
23
|
+
expanding_redir = 0;
|
24
|
+
+ /* Now we need to change the variable search order back to include the temp
|
25
|
+
+ environment. We force the temp environment search by forcing
|
26
|
+
+ executing_builtin to 1. This is what makes `read' get the right values
|
27
|
+
+ for the IFS-related cached variables, for example. */
|
28
|
+
+ old = executing_builtin;
|
29
|
+
+ executing_builtin = 1;
|
30
|
+
+ sv_ifs ("IFS");
|
31
|
+
+ executing_builtin = old;
|
32
|
+
+
|
33
|
+
herelen = STRLEN (herestr);
|
34
|
+
|
35
|
+
n = write (fd, herestr, herelen);
|
@@ -0,0 +1,12 @@
|
|
1
|
+
diff -up bash-4.2/subst.c.old bash-4.2/subst.c
|
2
|
+
--- bash-4.2/subst.c.old 2015-12-09 13:24:47.369738319 +0100
|
3
|
+
+++ bash-4.2/subst.c 2015-12-09 13:28:27.366024824 +0100
|
4
|
+
@@ -2713,6 +2713,8 @@ do_compound_assignment (name, value, fla
|
5
|
+
else if (v == 0 || (array_p (v) == 0 && assoc_p (v) == 0) || v->context != variable_context)
|
6
|
+
v = make_local_array_variable (name);
|
7
|
+
assign_compound_array_list (v, list, flags);
|
8
|
+
+ if (list)
|
9
|
+
+ dispose_words (list);
|
10
|
+
}
|
11
|
+
else
|
12
|
+
v = assign_array_from_string (name, value, flags);
|
@@ -0,0 +1,24 @@
|
|
1
|
+
From ccd35766d2451677f4c49f66b8e18ad6e274d56a Mon Sep 17 00:00:00 2001
|
2
|
+
From: Jan Chaloupka <jchaloup@redhat.com>
|
3
|
+
Date: Mon, 7 Jul 2014 07:15:41 +0200
|
4
|
+
Subject: [PATCH] bash.1: posix block size for cf options
|
5
|
+
|
6
|
+
---
|
7
|
+
doc/bash.1 | 1 +
|
8
|
+
1 file changed, 1 insertion(+)
|
9
|
+
|
10
|
+
diff --git a/doc/bash.1 b/doc/bash.1
|
11
|
+
index a4ad746..1916515 100644
|
12
|
+
--- a/doc/bash.1
|
13
|
+
+++ b/doc/bash.1
|
14
|
+
@@ -9451,6 +9451,7 @@ and
|
15
|
+
which are unscaled values.
|
16
|
+
The return status is 0 unless an invalid option or argument is supplied,
|
17
|
+
or an error occurs while setting a new limit.
|
18
|
+
+In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options.
|
19
|
+
.RE
|
20
|
+
.TP
|
21
|
+
\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
|
22
|
+
--
|
23
|
+
1.9.3
|
24
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
diff -up bash-4.2/doc/bash.1.manpage bash-4.2/doc/bash.1
|
2
|
+
--- bash-4.2/doc/bash.1.manpage 2011-01-26 15:30:03.000000000 +0100
|
3
|
+
+++ bash-4.2/doc/bash.1 2011-01-26 15:47:16.000000000 +0100
|
4
|
+
@@ -6646,7 +6646,9 @@ must be \(>= 1. If
|
5
|
+
.I n
|
6
|
+
is greater than the number of enclosing loops, all enclosing loops
|
7
|
+
are exited.
|
8
|
+
-The return value is 0 unless \fIn\fP is not greater than or equal to 1.
|
9
|
+
+The return value is non-zero when \fIn\fP is \(<= 0; Otherwise,
|
10
|
+
+.BR break
|
11
|
+
+returns 0 value.
|
12
|
+
.TP
|
13
|
+
\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
|
14
|
+
Execute the specified shell builtin, passing it
|
15
|
+
@@ -7017,7 +7019,15 @@ must be \(>= 1. If
|
16
|
+
.I n
|
17
|
+
is greater than the number of enclosing loops, the last enclosing loop
|
18
|
+
(the ``top-level'' loop) is resumed.
|
19
|
+
-The return value is 0 unless \fIn\fP is not greater than or equal to 1.
|
20
|
+
+When
|
21
|
+
+.BR continue
|
22
|
+
+is executed inside of loop, the return value is non-zero when
|
23
|
+
+.I n
|
24
|
+
+is \(<= 0; Otherwise,
|
25
|
+
+.BR continue
|
26
|
+
+returns 0 value. When
|
27
|
+
+.BR continue
|
28
|
+
+is executed outside of loop, the return value is 0.
|
29
|
+
.TP
|
30
|
+
\fBdeclare\fP [\fB\-aAfFgilrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
|
31
|
+
.PD 0
|
32
|
+
@@ -9019,9 +9029,19 @@ by default.
|
33
|
+
Suspend the execution of this shell until it receives a
|
34
|
+
.SM
|
35
|
+
.B SIGCONT
|
36
|
+
-signal. A login shell cannot be suspended; the
|
37
|
+
+signal. When the suspended shell is a background process, it can be restarted
|
38
|
+
+by the
|
39
|
+
+.B fg
|
40
|
+
+command. For more information, read the
|
41
|
+
+.SM
|
42
|
+
+.B JOB CONTROL
|
43
|
+
+section. The
|
44
|
+
+.B suspend
|
45
|
+
+command can not suspend the login shell. However, when
|
46
|
+
.B \-f
|
47
|
+
-option can be used to override this and force the suspension.
|
48
|
+
+option is specified,
|
49
|
+
+.B suspend
|
50
|
+
+command can suspend even login shell.
|
51
|
+
The return status is 0 unless the shell is a login shell and
|
52
|
+
.B \-f
|
53
|
+
is not supplied, or if job control is not enabled.
|
@@ -0,0 +1,12 @@
|
|
1
|
+
diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1
|
2
|
+
--- bash-4.1/doc/bash.1.manpage_trap 2012-08-28 10:06:00.561999092 +0200
|
3
|
+
+++ bash-4.1/doc/bash.1 2012-08-28 10:06:24.225304505 +0200
|
4
|
+
@@ -9251,7 +9251,7 @@ being inverted via
|
5
|
+
These are the same conditions obeyed by the \fBerrexit\fP option.
|
6
|
+
.if t .sp 0.5
|
7
|
+
.if n .sp 1
|
8
|
+
-Signals ignored upon entry to the shell cannot be trapped or reset.
|
9
|
+
+Signals ignored upon entry to the shell cannot be trapped, reset or listed.
|
10
|
+
Trapped signals that are not being ignored are reset to their original
|
11
|
+
values in a subshell or subshell environment when one is created.
|
12
|
+
The return status is false if any
|
@@ -0,0 +1,12 @@
|
|
1
|
+
diff -up bash-4.2/builtins/cd.def.old bash-4.2/builtins/cd.def
|
2
|
+
--- bash-4.2/builtins/cd.def.old 2015-12-09 11:47:59.113106805 +0100
|
3
|
+
+++ bash-4.2/builtins/cd.def 2015-12-09 11:48:13.702060840 +0100
|
4
|
+
@@ -200,7 +200,7 @@ cd_builtin (list)
|
5
|
+
eflag = 0;
|
6
|
+
no_symlinks = no_symbolic_links;
|
7
|
+
reset_internal_getopt ();
|
8
|
+
- while ((opt = internal_getopt (list, "LP")) != -1)
|
9
|
+
+ while ((opt = internal_getopt (list, "LPe")) != -1)
|
10
|
+
{
|
11
|
+
switch (opt)
|
12
|
+
{
|
@@ -0,0 +1,39 @@
|
|
1
|
+
There are missing calls of close() leading to resource leak (fd leak).
|
2
|
+
Simple reproducer:
|
3
|
+
. /
|
4
|
+
and /proc/$$/fd contain one open fd for each above call
|
5
|
+
|
6
|
+
Signed-off-by: Roman Rakus <rrakus@redhat.com>
|
7
|
+
---
|
8
|
+
builtins/evalfile.c | 3 +++
|
9
|
+
1 file changed, 3 insertions(+)
|
10
|
+
|
11
|
+
diff --git a/builtins/evalfile.c b/builtins/evalfile.c
|
12
|
+
index 60f89d1..d30bd96 100644
|
13
|
+
--- a/builtins/evalfile.c
|
14
|
+
+++ b/builtins/evalfile.c
|
15
|
+
@@ -133,11 +133,13 @@ file_error_and_exit:
|
16
|
+
if (S_ISDIR (finfo.st_mode))
|
17
|
+
{
|
18
|
+
(*errfunc) (_("%s: is a directory"), filename);
|
19
|
+
+ close(fd);
|
20
|
+
return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
|
21
|
+
}
|
22
|
+
else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0)
|
23
|
+
{
|
24
|
+
(*errfunc) (_("%s: not a regular file"), filename);
|
25
|
+
+ close(fd);
|
26
|
+
return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
|
27
|
+
}
|
28
|
+
|
29
|
+
@@ -146,6 +148,7 @@ file_error_and_exit:
|
30
|
+
if (file_size != finfo.st_size || file_size + 1 < file_size)
|
31
|
+
{
|
32
|
+
(*errfunc) (_("%s: file is too large"), filename);
|
33
|
+
+ close(fd);
|
34
|
+
return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
|
35
|
+
}
|
36
|
+
|
37
|
+
--
|
38
|
+
1.7.11.7
|
39
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
--- bash-4.2/parse.y 2014-05-29 14:46:09.545543384 +0200
|
2
|
+
+++ bash-4.2/parse.y 2014-05-29 14:48:40.758626213 +0200
|
3
|
+
@@ -3858,6 +3858,8 @@ xparse_dolparen (base, string, indp, fla
|
4
|
+
sflags |= SEVAL_NOLONGJMP;
|
5
|
+
save_parser_state (&ps);
|
6
|
+
save_input_line_state (&ls);
|
7
|
+
+ /* avoid echoing every substitution again */
|
8
|
+
+ echo_input_at_read = 0;
|
9
|
+
|
10
|
+
/*(*/
|
11
|
+
parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/
|
12
|
+
--- bash-4.2/subst.c 2014-05-29 16:04:35.802784549 +0200
|
13
|
+
+++ bash-4.2/subst.c 2014-05-29 16:08:25.021942676 +0200
|
14
|
+
@@ -7103,6 +7103,7 @@ param_expand (string, sindex, quoted, ex
|
15
|
+
WORD_LIST *list;
|
16
|
+
WORD_DESC *tdesc, *ret;
|
17
|
+
int tflag;
|
18
|
+
+ int old_echo_input;
|
19
|
+
|
20
|
+
zindex = *sindex;
|
21
|
+
c = string[++zindex];
|
22
|
+
@@ -7401,6 +7402,9 @@ arithsub:
|
23
|
+
}
|
24
|
+
|
25
|
+
comsub:
|
26
|
+
+ old_echo_input = echo_input_at_read;
|
27
|
+
+ /* avoid echoing every substitution again */
|
28
|
+
+ echo_input_at_read = 0;
|
29
|
+
if (pflags & PF_NOCOMSUB)
|
30
|
+
/* we need zindex+1 because string[zindex] == RPAREN */
|
31
|
+
temp1 = substring (string, *sindex, zindex+1);
|
32
|
+
@@ -7413,6 +7417,7 @@ comsub:
|
33
|
+
}
|
34
|
+
FREE (temp);
|
35
|
+
temp = temp1;
|
36
|
+
+ echo_input_at_read = old_echo_input;
|
37
|
+
break;
|
38
|
+
|
39
|
+
/* Do POSIX.2d9-style arithmetic substitution. This will probably go
|
@@ -0,0 +1,36 @@
|
|
1
|
+
diff -up bash-3.2/config-top.h.logout bash-3.2/config-top.h
|
2
|
+
--- bash-3.2/config-top.h.logout 2011-04-14 08:55:55.000000000 +0200
|
3
|
+
+++ bash-3.2/config-top.h 2011-04-14 08:55:55.000000000 +0200
|
4
|
+
|
5
|
+
/* #define SYS_BASHRC "/etc/bash.bashrc" */
|
6
|
+
|
7
|
+
/* System-wide .bash_logout for login shells. */
|
8
|
+
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
|
9
|
+
+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
|
10
|
+
|
11
|
+
/* Define this to make non-interactive shells begun with argv[0][0] == '-'
|
12
|
+
run the startup files when not in posix mode. */
|
13
|
+
diff -up bash-3.2/doc/bash.1.logout bash-3.2/doc/bash.1
|
14
|
+
--- bash-3.2/doc/bash.1.logout 2011-04-14 09:16:32.000000000 +0200
|
15
|
+
+++ bash-3.2/doc/bash.1 2011-04-14 11:59:33.000000000 +0200
|
16
|
+
@@ -326,8 +326,8 @@ option may be used when the shell is sta
|
17
|
+
.PP
|
18
|
+
When a login shell exits,
|
19
|
+
.B bash
|
20
|
+
-reads and executes commands from the file \fI~/.bash_logout\fP, if it
|
21
|
+
-exists.
|
22
|
+
+reads and executes commands from the files \fI~/.bash_logout\fP
|
23
|
+
+and \fI/etc/bash.bash_logout\fP, if the files exists.
|
24
|
+
.PP
|
25
|
+
When an interactive shell that is not a login shell is started,
|
26
|
+
.B bash
|
27
|
+
@@ -8814,6 +8814,9 @@ The \fBbash\fP executable
|
28
|
+
.FN /etc/profile
|
29
|
+
The systemwide initialization file, executed for login shells
|
30
|
+
.TP
|
31
|
+
+.FN /etc/bash.bash_logout
|
32
|
+
+The systemwide login shell cleanup file, executed when a login shell exits
|
33
|
+
+.TP
|
34
|
+
.FN ~/.bash_profile
|
35
|
+
The personal initialization file, executed for login shells
|
36
|
+
.TP
|
@@ -0,0 +1,36 @@
|
|
1
|
+
diff -up bash-4.1/sig.h.signal bash-4.1/sig.h
|
2
|
+
--- bash-4.1/sig.h.signal 2009-01-04 20:32:41.000000000 +0100
|
3
|
+
+++ bash-4.1/sig.h 2012-08-28 11:19:14.920224571 +0200
|
4
|
+
@@ -96,6 +96,8 @@ do { \
|
5
|
+
sigprocmask (SIG_BLOCK, &nvar, &ovar); \
|
6
|
+
} while (0)
|
7
|
+
|
8
|
+
+#define UNBLOCK_SIGNAL(ovar) sigprocmask (SIG_SETMASK, &ovar, (sigset_t *)NULL)
|
9
|
+
+
|
10
|
+
#if defined (HAVE_POSIX_SIGNALS)
|
11
|
+
# define BLOCK_CHILD(nvar, ovar) \
|
12
|
+
BLOCK_SIGNAL (SIGCHLD, nvar, ovar)
|
13
|
+
diff -up bash-4.1/trap.c.signal bash-4.1/trap.c
|
14
|
+
--- bash-4.1/trap.c.signal 2009-10-10 23:21:44.000000000 +0200
|
15
|
+
+++ bash-4.1/trap.c 2012-08-28 10:58:14.746345797 +0200
|
16
|
+
@@ -516,6 +516,8 @@ set_signal (sig, string)
|
17
|
+
int sig;
|
18
|
+
char *string;
|
19
|
+
{
|
20
|
+
+ sigset_t set, oset;
|
21
|
+
+
|
22
|
+
if (SPECIAL_TRAP (sig))
|
23
|
+
{
|
24
|
+
change_signal (sig, savestring (string));
|
25
|
+
@@ -546,9 +548,10 @@ set_signal (sig, string)
|
26
|
+
environment in which it is safe to do so. */
|
27
|
+
if ((sigmodes[sig] & SIG_NO_TRAP) == 0)
|
28
|
+
{
|
29
|
+
- set_signal_handler (sig, SIG_IGN);
|
30
|
+
+ BLOCK_SIGNAL (sig, set, oset);
|
31
|
+
change_signal (sig, savestring (string));
|
32
|
+
set_signal_handler (sig, trap_handler);
|
33
|
+
+ UNBLOCK_SIGNAL (oset);
|
34
|
+
}
|
35
|
+
else
|
36
|
+
change_signal (sig, savestring (string));
|
@@ -0,0 +1,14 @@
|
|
1
|
+
diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h
|
2
|
+
--- bash-4.2/variables.h.size_type 2012-11-29 10:33:25.109036844 +0100
|
3
|
+
+++ bash-4.2/variables.h 2012-11-29 10:46:12.718530162 +0100
|
4
|
+
@@ -95,8 +95,8 @@ typedef struct variable {
|
5
|
+
|
6
|
+
typedef struct _vlist {
|
7
|
+
SHELL_VAR **list;
|
8
|
+
- int list_size; /* allocated size */
|
9
|
+
- int list_len; /* current number of entries */
|
10
|
+
+ size_t list_size; /* allocated size */
|
11
|
+
+ size_t list_len; /* current number of entries */
|
12
|
+
} VARLIST;
|
13
|
+
|
14
|
+
/* The various attributes that a given variable can have. */
|
@@ -0,0 +1,95 @@
|
|
1
|
+
diff --git a/parse.y b/parse.y
|
2
|
+
index 12d6def..d4a93a2 100644
|
3
|
+
--- a/parse.y
|
4
|
+
+++ b/parse.y
|
5
|
+
@@ -5103,7 +5103,7 @@ decode_prompt_string (string)
|
6
|
+
size_t result_size;
|
7
|
+
int result_index;
|
8
|
+
int c, n, i;
|
9
|
+
- char *temp, octal_string[4];
|
10
|
+
+ char *temp, *t_host, octal_string[4];
|
11
|
+
struct tm *tm;
|
12
|
+
time_t the_time;
|
13
|
+
char timebuf[128];
|
14
|
+
@@ -5251,7 +5251,11 @@ decode_prompt_string (string)
|
15
|
+
|
16
|
+
case 's':
|
17
|
+
temp = base_pathname (shell_name);
|
18
|
+
- temp = savestring (temp);
|
19
|
+
+ /* Try to quote anything the user can set in the file system */
|
20
|
+
+ if (promptvars || posixly_correct)
|
21
|
+
+ temp = sh_backslash_quote_for_double_quotes (temp);
|
22
|
+
+ else
|
23
|
+
+ temp = savestring (temp);
|
24
|
+
goto add_string;
|
25
|
+
|
26
|
+
case 'v':
|
27
|
+
@@ -5337,9 +5341,17 @@ decode_prompt_string (string)
|
28
|
+
|
29
|
+
case 'h':
|
30
|
+
case 'H':
|
31
|
+
- temp = savestring (current_host_name);
|
32
|
+
- if (c == 'h' && (t = (char *)strchr (temp, '.')))
|
33
|
+
+ t_host = savestring (current_host_name);
|
34
|
+
+ if (c == 'h' && (t = (char *)strchr (t_host, '.')))
|
35
|
+
*t = '\0';
|
36
|
+
+ if (promptvars || posixly_correct)
|
37
|
+
+ /* Make sure that expand_prompt_string is called with a
|
38
|
+
+ second argument of Q_DOUBLE_QUOTES if we use this
|
39
|
+
+ function here. */
|
40
|
+
+ temp = sh_backslash_quote_for_double_quotes (t_host);
|
41
|
+
+ else
|
42
|
+
+ temp = savestring (t_host);
|
43
|
+
+ free (t_host);
|
44
|
+
goto add_string;
|
45
|
+
|
46
|
+
case '#':
|
47
|
+
diff --git a/y.tab.c b/y.tab.c
|
48
|
+
index 23b88bc..1c0f5a1 100644
|
49
|
+
--- a/y.tab.c
|
50
|
+
+++ b/y.tab.c
|
51
|
+
@@ -7368,7 +7368,7 @@ decode_prompt_string (string)
|
52
|
+
size_t result_size;
|
53
|
+
int result_index;
|
54
|
+
int c, n, i;
|
55
|
+
- char *temp, octal_string[4];
|
56
|
+
+ char *temp, *t_host, octal_string[4];
|
57
|
+
struct tm *tm;
|
58
|
+
time_t the_time;
|
59
|
+
char timebuf[128];
|
60
|
+
@@ -7513,7 +7513,11 @@ decode_prompt_string (string)
|
61
|
+
|
62
|
+
case 's':
|
63
|
+
temp = base_pathname (shell_name);
|
64
|
+
- temp = savestring (temp);
|
65
|
+
+ /* Try to quote anything the user can set in the file system */
|
66
|
+
+ if (promptvars || posixly_correct)
|
67
|
+
+ temp = sh_backslash_quote_for_double_quotes (temp);
|
68
|
+
+ else
|
69
|
+
+ temp = savestring (temp);
|
70
|
+
goto add_string;
|
71
|
+
|
72
|
+
case 'v':
|
73
|
+
@@ -7599,9 +7603,17 @@ decode_prompt_string (string)
|
74
|
+
|
75
|
+
case 'h':
|
76
|
+
case 'H':
|
77
|
+
- temp = savestring (current_host_name);
|
78
|
+
- if (c == 'h' && (t = (char *)strchr (temp, '.')))
|
79
|
+
+ t_host = savestring (current_host_name);
|
80
|
+
+ if (c == 'h' && (t = (char *)strchr (t_host, '.')))
|
81
|
+
*t = '\0';
|
82
|
+
+ if (promptvars || posixly_correct)
|
83
|
+
+ /* Make sure that expand_prompt_string is called with a
|
84
|
+
+ second argument of Q_DOUBLE_QUOTES if we use this
|
85
|
+
+ function here. */
|
86
|
+
+ temp = sh_backslash_quote_for_double_quotes (t_host);
|
87
|
+
+ else
|
88
|
+
+ temp = savestring (t_host);
|
89
|
+
+ free (t_host);
|
90
|
+
goto add_string;
|
91
|
+
|
92
|
+
case '#':
|
93
|
+
--
|
94
|
+
2.9.3
|
95
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
diff --git a/variables.c b/variables.c
|
2
|
+
index b7ebaea..5e2986f 100644
|
3
|
+
--- a/variables.c
|
4
|
+
+++ b/variables.c
|
5
|
+
@@ -467,7 +467,11 @@ initialize_shell_variables (env, privmode)
|
6
|
+
#endif
|
7
|
+
set_if_not ("PS2", secondary_prompt);
|
8
|
+
}
|
9
|
+
- set_if_not ("PS4", "+ ");
|
10
|
+
+
|
11
|
+
+ if (current_user.euid == 0)
|
12
|
+
+ bind_variable ("PS4", "+ ", 0);
|
13
|
+
+ else
|
14
|
+
+ set_if_not ("PS4", "+ ");
|
15
|
+
|
16
|
+
/* Don't allow IFS to be imported from the environment. */
|
17
|
+
temp_var = bind_variable ("IFS", " \t\n", 0);
|
18
|
+
--
|
19
|
+
2.9.3
|
20
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
diff --git a/execute_cmd.c b/execute_cmd.c
|
2
|
+
--- a/execute_cmd.c
|
3
|
+
+++ b/execute_cmd.c
|
4
|
+
@@ -536,6 +536,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
5
|
+
REDIRECT *my_undo_list, *exec_undo_list;
|
6
|
+
volatile int last_pid;
|
7
|
+
volatile int save_line_number;
|
8
|
+
+#if defined (PROCESS_SUBSTITUTION)
|
9
|
+
+ volatile int ofifo, nfifo, osize, saved_fifo;
|
10
|
+
+ volatile char *ofifo_list = NULL;
|
11
|
+
+#endif
|
12
|
+
|
13
|
+
#if 0
|
14
|
+
if (command == 0 || breaking || continuing || read_but_dont_execute)
|
15
|
+
@@ -681,6 +685,17 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
16
|
+
if (shell_control_structure (command->type) && command->redirects)
|
17
|
+
stdin_redir = stdin_redirects (command->redirects);
|
18
|
+
|
19
|
+
+#if defined (PROCESS_SUBSTITUTION)
|
20
|
+
+ if (variable_context != 0)
|
21
|
+
+ {
|
22
|
+
+ ofifo = num_fifos ();
|
23
|
+
+ ofifo_list = copy_fifo_list ((int*)&osize);
|
24
|
+
+ saved_fifo = 1;
|
25
|
+
+ }
|
26
|
+
+ else
|
27
|
+
+ saved_fifo = 0;
|
28
|
+
+#endif
|
29
|
+
+
|
30
|
+
/* Handle WHILE FOR CASE etc. with redirections. (Also '&' input
|
31
|
+
redirection.) */
|
32
|
+
if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
|
33
|
+
@@ -688,6 +703,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
34
|
+
cleanup_redirects (redirection_undo_list);
|
35
|
+
redirection_undo_list = (REDIRECT *)NULL;
|
36
|
+
dispose_exec_redirects ();
|
37
|
+
+#if defined (PROCESS_SUBSTITUTION)
|
38
|
+
+ free ((void*)ofifo_list);
|
39
|
+
+#endif
|
40
|
+
return (last_command_exit_value = EXECUTION_FAILURE);
|
41
|
+
}
|
42
|
+
|
43
|
+
@@ -982,6 +1000,17 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
44
|
+
if (my_undo_list || exec_undo_list)
|
45
|
+
discard_unwind_frame ("loop_redirections");
|
46
|
+
|
47
|
+
+#if defined (PROCESS_SUBSTITUTION)
|
48
|
+
+ if (saved_fifo)
|
49
|
+
+ {
|
50
|
+
+ nfifo = num_fifos ();
|
51
|
+
+ if (nfifo > ofifo)
|
52
|
+
+ close_new_fifos ((char*)ofifo_list, osize);
|
53
|
+
+ free ((void*)ofifo_list);
|
54
|
+
+ }
|
55
|
+
+#endif
|
56
|
+
+
|
57
|
+
+
|
58
|
+
/* Invert the return value if we have to */
|
59
|
+
if (invert)
|
60
|
+
exec_result = (exec_result == EXECUTION_SUCCESS)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
diff --git a/jobs.c b/jobs.c
|
2
|
+
index 37edece..31395fe 100644
|
3
|
+
--- a/jobs.c
|
4
|
+
+++ b/jobs.c
|
5
|
+
@@ -2244,10 +2244,14 @@ wait_sigint_handler (sig)
|
6
|
+
signal_is_trapped (SIGINT) &&
|
7
|
+
((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler))
|
8
|
+
{
|
9
|
+
- interrupt_immediately = 0;
|
10
|
+
trap_handler (SIGINT); /* set pending_traps[SIGINT] */
|
11
|
+
wait_signal_received = SIGINT;
|
12
|
+
- longjmp (wait_intr_buf, 1);
|
13
|
+
+ if (interrupt_immediately)
|
14
|
+
+ {
|
15
|
+
+ interrupt_immediately = 0;
|
16
|
+
+ longjmp (wait_intr_buf, 1);
|
17
|
+
+ }
|
18
|
+
+ SIGRETURN (0);
|
19
|
+
}
|
20
|
+
|
21
|
+
ADDINTERRUPT;
|
22
|
+
--
|
23
|
+
2.5.5
|
24
|
+
|
@@ -0,0 +1,149 @@
|
|
1
|
+
diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c
|
2
|
+
--- a/lib/sh/strtrans.c
|
3
|
+
+++ b/lib/sh/strtrans.c
|
4
|
+
|
5
|
+
|
6
|
+
#include "shell.h"
|
7
|
+
|
8
|
+
+#include "shmbchar.h"
|
9
|
+
+#include "shmbutil.h"
|
10
|
+
+
|
11
|
+
#ifdef ESC
|
12
|
+
#undef ESC
|
13
|
+
#endif
|
14
|
+
@@ -74,7 +77,7 @@ ansicstr (string, len, flags, sawc, rlen)
|
15
|
+
case 'a': c = '\a'; break;
|
16
|
+
case 'v': c = '\v'; break;
|
17
|
+
#else
|
18
|
+
- case 'a': c = '\007'; break;
|
19
|
+
+ case 'a': c = (int) 0x07; break;
|
20
|
+
case 'v': c = (int) 0x0B; break;
|
21
|
+
#endif
|
22
|
+
case 'b': c = '\b'; break;
|
23
|
+
@@ -208,6 +211,11 @@ ansic_quote (str, flags, rlen)
|
24
|
+
char *r, *ret, *s;
|
25
|
+
int l, rsize;
|
26
|
+
unsigned char c;
|
27
|
+
+ size_t clen;
|
28
|
+
+ int b;
|
29
|
+
+#if defined (HANDLE_MULTIBYTE)
|
30
|
+
+ wchar_t wc;
|
31
|
+
+#endif
|
32
|
+
|
33
|
+
if (str == 0 || *str == 0)
|
34
|
+
return ((char *)0);
|
35
|
+
@@ -219,10 +227,11 @@ ansic_quote (str, flags, rlen)
|
36
|
+
*r++ = '$';
|
37
|
+
*r++ = '\'';
|
38
|
+
|
39
|
+
- for (s = str, l = 0; *s; s++)
|
40
|
+
+ for (s = str; c = *s; s++)
|
41
|
+
{
|
42
|
+
- c = *s;
|
43
|
+
- l = 1; /* 1 == add backslash; 0 == no backslash */
|
44
|
+
+ b = l = 1; /* 1 == add backslash; 0 == no backslash */
|
45
|
+
+ clen = 1;
|
46
|
+
+
|
47
|
+
switch (c)
|
48
|
+
{
|
49
|
+
case ESC: c = 'E'; break;
|
50
|
+
@@ -230,7 +239,7 @@ ansic_quote (str, flags, rlen)
|
51
|
+
case '\a': c = 'a'; break;
|
52
|
+
case '\v': c = 'v'; break;
|
53
|
+
#else
|
54
|
+
- case '\007': c = 'a'; break;
|
55
|
+
+ case 0x07: c = 'a'; break;
|
56
|
+
case 0x0b: c = 'v'; break;
|
57
|
+
#endif
|
58
|
+
|
59
|
+
@@ -243,7 +252,13 @@ ansic_quote (str, flags, rlen)
|
60
|
+
case '\'':
|
61
|
+
break;
|
62
|
+
default:
|
63
|
+
+#if defined (HANDLE_MULTIBYTE)
|
64
|
+
+ b = is_basic (c);
|
65
|
+
+ if ((b == 0 && ((clen = mbrtowc (&wc, s, MB_CUR_MAX, 0)) < 0 || MB_INVALIDCH (clen) || iswprint (wc) == 0)) ||
|
66
|
+
+ (b == 1 && ISPRINT (c) == 0))
|
67
|
+
+#else
|
68
|
+
if (ISPRINT (c) == 0)
|
69
|
+
+#endif
|
70
|
+
{
|
71
|
+
*r++ = '\\';
|
72
|
+
*r++ = TOCHAR ((c >> 6) & 07);
|
73
|
+
@@ -254,9 +269,20 @@ ansic_quote (str, flags, rlen)
|
74
|
+
l = 0;
|
75
|
+
break;
|
76
|
+
}
|
77
|
+
+ if (b == 0 && clen == 0)
|
78
|
+
+ break;
|
79
|
+
+
|
80
|
+
if (l)
|
81
|
+
*r++ = '\\';
|
82
|
+
- *r++ = c;
|
83
|
+
+
|
84
|
+
+ if (clen == 1)
|
85
|
+
+ *r++ = c;
|
86
|
+
+ else
|
87
|
+
+ {
|
88
|
+
+ for (b = 0; b < (int)clen; b++)
|
89
|
+
+ *r++ = (unsigned char)s[b];
|
90
|
+
+ s += clen - 1; /* -1 because of the increment above */
|
91
|
+
+ }
|
92
|
+
}
|
93
|
+
|
94
|
+
*r++ = '\'';
|
95
|
+
@@ -266,6 +292,37 @@ ansic_quote (str, flags, rlen)
|
96
|
+
return ret;
|
97
|
+
}
|
98
|
+
|
99
|
+
+#if defined (HANDLE_MULTIBYTE)
|
100
|
+
+int
|
101
|
+
+ansic_wshouldquote (string)
|
102
|
+
+ const char *string;
|
103
|
+
+{
|
104
|
+
+ const wchar_t *wcs;
|
105
|
+
+ wchar_t wcc;
|
106
|
+
+
|
107
|
+
+ wchar_t *wcstr = NULL;
|
108
|
+
+ size_t slen;
|
109
|
+
+
|
110
|
+
+
|
111
|
+
+ slen = mbstowcs (wcstr, string, 0);
|
112
|
+
+
|
113
|
+
+ if (slen == -1)
|
114
|
+
+ slen = 0;
|
115
|
+
+ wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1));
|
116
|
+
+ mbstowcs (wcstr, string, slen + 1);
|
117
|
+
+
|
118
|
+
+ for (wcs = wcstr; wcc = *wcs; wcs++)
|
119
|
+
+ if (iswprint(wcc) == 0)
|
120
|
+
+ {
|
121
|
+
+ free (wcstr);
|
122
|
+
+ return 1;
|
123
|
+
+ }
|
124
|
+
+
|
125
|
+
+ free (wcstr);
|
126
|
+
+ return 0;
|
127
|
+
+}
|
128
|
+
+#endif
|
129
|
+
+
|
130
|
+
/* return 1 if we need to quote with $'...' because of non-printing chars. */
|
131
|
+
int
|
132
|
+
ansic_shouldquote (string)
|
133
|
+
@@ -278,8 +335,14 @@ ansic_shouldquote (string)
|
134
|
+
return 0;
|
135
|
+
|
136
|
+
for (s = string; c = *s; s++)
|
137
|
+
- if (ISPRINT (c) == 0)
|
138
|
+
- return 1;
|
139
|
+
+ {
|
140
|
+
+#if defined (HANDLE_MULTIBYTE)
|
141
|
+
+ if (is_basic (c) == 0)
|
142
|
+
+ return (ansic_wshouldquote (s));
|
143
|
+
+#endif
|
144
|
+
+ if (ISPRINT (c) == 0)
|
145
|
+
+ return 1;
|
146
|
+
+ }
|
147
|
+
|
148
|
+
return 0;
|
149
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
diff --git a/parse.y b/parse.y
|
2
|
+
index 9a78d0c..7df7d99 100644
|
3
|
+
--- a/parse.y
|
4
|
+
+++ b/parse.y
|
5
|
+
@@ -4993,7 +4993,8 @@ decode_prompt_string (string)
|
6
|
+
struct dstack save_dstack;
|
7
|
+
int last_exit_value, last_comsub_pid;
|
8
|
+
#if defined (PROMPT_STRING_DECODE)
|
9
|
+
- int result_size, result_index;
|
10
|
+
+ size_t result_size;
|
11
|
+
+ int result_index;
|
12
|
+
int c, n, i;
|
13
|
+
char *temp, octal_string[4];
|
14
|
+
struct tm *tm;
|
15
|
+
diff --git a/subst.c b/subst.c
|
16
|
+
index 9f15f0b..e5ffd03 100644
|
17
|
+
--- a/subst.c
|
18
|
+
+++ b/subst.c
|
19
|
+
@@ -644,11 +644,13 @@ unquoted_substring (substr, string)
|
20
|
+
INLINE char *
|
21
|
+
sub_append_string (source, target, indx, size)
|
22
|
+
char *source, *target;
|
23
|
+
- int *indx, *size;
|
24
|
+
+ int *indx;
|
25
|
+
+ size_t *size;
|
26
|
+
{
|
27
|
+
if (source)
|
28
|
+
{
|
29
|
+
- int srclen, n;
|
30
|
+
+ int n;
|
31
|
+
+ size_t srclen;
|
32
|
+
|
33
|
+
srclen = STRLEN (source);
|
34
|
+
if (srclen >= (int)(*size - *indx))
|
35
|
+
@@ -7676,7 +7678,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
|
36
|
+
char *istring;
|
37
|
+
|
38
|
+
/* The current size of the above object. */
|
39
|
+
- int istring_size;
|
40
|
+
+ size_t istring_size;
|
41
|
+
|
42
|
+
/* Index into ISTRING. */
|
43
|
+
int istring_index;
|
44
|
+
diff --git a/subst.h b/subst.h
|
45
|
+
index b06e8c2..fc66faf 100644
|
46
|
+
--- a/subst.h
|
47
|
+
+++ b/subst.h
|
48
|
+
@@ -127,7 +127,7 @@ extern int do_word_assignment __P((WORD_DESC *));
|
49
|
+
of space allocated to TARGET. SOURCE can be NULL, in which
|
50
|
+
case nothing happens. Gets rid of SOURCE by free ()ing it.
|
51
|
+
Returns TARGET in case the location has changed. */
|
52
|
+
-extern char *sub_append_string __P((char *, char *, int *, int *));
|
53
|
+
+extern char *sub_append_string __P((char *, char *, int *, size_t *));
|
54
|
+
|
55
|
+
/* Append the textual representation of NUMBER to TARGET.
|
56
|
+
INDEX and SIZE are as in SUB_APPEND_STRING. */
|
57
|
+
diff --git a/y.tab.c b/y.tab.c
|
58
|
+
index d702554..31faa4a 100644
|
59
|
+
--- a/y.tab.c
|
60
|
+
+++ b/y.tab.c
|
61
|
+
@@ -7280,7 +7280,8 @@ decode_prompt_string (string)
|
62
|
+
struct dstack save_dstack;
|
63
|
+
int last_exit_value, last_comsub_pid;
|
64
|
+
#if defined (PROMPT_STRING_DECODE)
|
65
|
+
- int result_size, result_index;
|
66
|
+
+ size_t result_size;
|
67
|
+
+ int result_index;
|
68
|
+
int c, n, i;
|
69
|
+
char *temp, octal_string[4];
|
70
|
+
struct tm *tm;
|
71
|
+
--
|
72
|
+
2.5.5
|
73
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
diff --git a/subst.c b/subst.c
|
2
|
+
index 1dbfb5e..049962e 100644
|
3
|
+
--- a/subst.c
|
4
|
+
+++ b/subst.c
|
5
|
+
@@ -5011,7 +5011,8 @@ process_substitute (string, open_for_read_in_child)
|
6
|
+
|
7
|
+
#if defined (JOB_CONTROL)
|
8
|
+
old_pipeline_pgrp = pipeline_pgrp;
|
9
|
+
- pipeline_pgrp = shell_pgrp;
|
10
|
+
+ if (pipeline_pgrp == 0 || (subshell_environment & (SUBSHELL_PIPE|SUBSHELL_FORK|SUBSHELL_ASYNC)) == 0)
|
11
|
+
+ pipeline_pgrp = shell_pgrp;
|
12
|
+
save_pipeline (1);
|
13
|
+
#endif /* JOB_CONTROL */
|
14
|
+
|
15
|
+
--
|
16
|
+
2.9.3
|
17
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
diff -up bash-4.2-rc2/doc/bash.1.bashbug bash-4.2-rc2/doc/bash.1
|
2
|
+
--- bash-4.2-rc2/doc/bash.1.bashbug 2011-01-16 21:31:39.000000000 +0100
|
3
|
+
+++ bash-4.2-rc2/doc/bash.1 2011-02-09 08:52:14.000000000 +0100
|
4
|
+
@@ -9857,7 +9857,7 @@ The latest version is always available f
|
5
|
+
.PP
|
6
|
+
Once you have determined that a bug actually exists, use the
|
7
|
+
.I bashbug
|
8
|
+
-command to submit a bug report.
|
9
|
+
+command (from the source package) to submit a bug report.
|
10
|
+
If you have a fix, you are encouraged to mail that as well!
|
11
|
+
Suggestions and `philosophical' bug reports may be mailed
|
12
|
+
to \fIbug-bash@gnu.org\fP or posted to the Usenet
|
13
|
+
@@ -9879,10 +9879,6 @@ A description of the bug behaviour
|
14
|
+
A short script or `recipe' which exercises the bug
|
15
|
+
.PD
|
16
|
+
.PP
|
17
|
+
-.I bashbug
|
18
|
+
-inserts the first three items automatically into the template
|
19
|
+
-it provides for filing a bug report.
|
20
|
+
-.PP
|
21
|
+
Comments and bug reports concerning
|
22
|
+
this manual page should be directed to
|
23
|
+
.IR chet.ramey@case.edu .
|
24
|
+
diff -up bash-4.2-rc2/doc/bashref.texi.bashbug bash-4.2-rc2/doc/bashref.texi
|
25
|
+
--- bash-4.2-rc2/doc/bashref.texi.bashbug 2011-01-16 21:31:57.000000000 +0100
|
26
|
+
+++ bash-4.2-rc2/doc/bashref.texi 2011-02-09 08:47:07.000000000 +0100
|
27
|
+
@@ -7635,7 +7635,7 @@ The latest version of Bash is always ava
|
28
|
+
@uref{ftp://ftp.gnu.org/pub/gnu/bash/}.
|
29
|
+
|
30
|
+
Once you have determined that a bug actually exists, use the
|
31
|
+
-@code{bashbug} command to submit a bug report.
|
32
|
+
+@code{bashbug} command (from the source package) to submit a bug report.
|
33
|
+
If you have a fix, you are encouraged to mail that as well!
|
34
|
+
Suggestions and `philosophical' bug reports may be mailed
|
35
|
+
to @email{bug-bash@@gnu.org} or posted to the Usenet
|
36
|
+
@@ -7657,9 +7657,6 @@ to reproduce it.
|
37
|
+
@end itemize
|
38
|
+
|
39
|
+
@noindent
|
40
|
+
-@code{bashbug} inserts the first three items automatically into
|
41
|
+
-the template it provides for filing a bug report.
|
42
|
+
-
|
43
|
+
Please send all reports concerning this manual to
|
44
|
+
@email{chet.ramey@@case.edu}.
|
45
|
+
|
46
|
+
diff -up bash-4.2-rc2/shell.c.bashbug bash-4.2-rc2/shell.c
|
47
|
+
--- bash-4.2-rc2/shell.c.bashbug 2011-01-02 22:04:51.000000000 +0100
|
48
|
+
+++ bash-4.2-rc2/shell.c 2011-02-09 08:47:07.000000000 +0100
|
49
|
+
@@ -1823,7 +1823,6 @@ show_shell_usage (fp, extra)
|
50
|
+
{
|
51
|
+
fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name);
|
52
|
+
fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name);
|
53
|
+
- fprintf (fp, _("Use the `bashbug' command to report bugs.\n"));
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
diff --git a/builtins/pushd.def b/builtins/pushd.def
|
2
|
+
index 05b7529..4eb0132 100644
|
3
|
+
--- a/builtins/pushd.def
|
4
|
+
+++ b/builtins/pushd.def
|
5
|
+
@@ -353,7 +353,7 @@ popd_builtin (list)
|
6
|
+
break;
|
7
|
+
}
|
8
|
+
|
9
|
+
- if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
|
10
|
+
+ if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0))
|
11
|
+
{
|
12
|
+
pushd_error (directory_list_offset, which_word ? which_word : "");
|
13
|
+
return (EXECUTION_FAILURE);
|
14
|
+
@@ -375,6 +375,11 @@ popd_builtin (list)
|
15
|
+
remove that directory from the list and shift the remainder
|
16
|
+
of the list into place. */
|
17
|
+
i = (direction == '+') ? directory_list_offset - which : which;
|
18
|
+
+ if (i < 0 || i > directory_list_offset)
|
19
|
+
+ {
|
20
|
+
+ pushd_error (directory_list_offset, which_word ? which_word : "");
|
21
|
+
+ return (EXECUTION_FAILURE);
|
22
|
+
+ }
|
23
|
+
free (pushd_directory_list[i]);
|
24
|
+
directory_list_offset--;
|
25
|
+
|
26
|
+
--
|
27
|
+
2.9.3
|
28
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
--- bash-3.1/doc/Makefile.in.infotags 2006-07-12 13:57:18.000000000 +0100
|
2
|
+
+++ bash-3.1/doc/Makefile.in 2006-07-12 13:58:25.000000000 +0100
|
3
|
+
|
4
|
+
TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html
|
5
|
+
MAN2HTML = ${BUILD_DIR}/support/man2html
|
6
|
+
HTMLPOST = ${srcdir}/htmlpost.sh
|
7
|
+
-INFOPOST = ${srcdir}/infopost.sh
|
8
|
+
QUIETPS = #set this to -q to shut up dvips
|
9
|
+
PAPERSIZE = letter # change to a4 for A4-size paper
|
10
|
+
PSDPI = 600 # could be 300 if you like
|
11
|
+
|
12
|
+
|
13
|
+
PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps
|
14
|
+
DVIFILES = bashref.dvi bashref.ps
|
15
|
+
-INFOFILES = bashref.info
|
16
|
+
+INFOFILES = bashref.info bash.info
|
17
|
+
MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0
|
18
|
+
HTMLFILES = bashref.html bash.html
|
19
|
+
PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf
|
20
|
+
|
21
|
+
bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
22
|
+
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
|
23
|
+
|
24
|
+
-bash.info: bashref.info
|
25
|
+
- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
|
26
|
+
+bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
27
|
+
+ $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@
|
28
|
+
|
29
|
+
bash.txt: bash.1
|
30
|
+
bash.ps: bash.1
|
@@ -0,0 +1,311 @@
|
|
1
|
+
diff -up bash-4.1/builtins.h.requires bash-4.1/builtins.h
|
2
|
+
--- bash-4.1/builtins.h.requires 2009-01-04 20:32:23.000000000 +0100
|
3
|
+
+++ bash-4.1/builtins.h 2010-08-02 17:42:41.000000000 +0200
|
4
|
+
|
5
|
+
#define SPECIAL_BUILTIN 0x08 /* This is a Posix `special' builtin. */
|
6
|
+
#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */
|
7
|
+
#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */
|
8
|
+
+#define REQUIRES_BUILTIN 0x40 /* This builtin requires other files. */
|
9
|
+
+
|
10
|
+
|
11
|
+
#define BASE_INDENT 4
|
12
|
+
|
13
|
+
diff -up bash-4.1/builtins/mkbuiltins.c.requires bash-4.1/builtins/mkbuiltins.c
|
14
|
+
--- bash-4.1/builtins/mkbuiltins.c.requires 2009-01-04 20:32:23.000000000 +0100
|
15
|
+
+++ bash-4.1/builtins/mkbuiltins.c 2010-08-02 17:42:41.000000000 +0200
|
16
|
+
@@ -69,9 +69,15 @@ extern char *strcpy ();
|
17
|
+
#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
|
18
|
+
|
19
|
+
/* Flag values that builtins can have. */
|
20
|
+
+/* These flags are for the C code generator,
|
21
|
+
+ the C which is produced (./builtin.c)
|
22
|
+
+ includes the flags definitions found
|
23
|
+
+ in ../builtins.h */
|
24
|
+
#define BUILTIN_FLAG_SPECIAL 0x01
|
25
|
+
#define BUILTIN_FLAG_ASSIGNMENT 0x02
|
26
|
+
#define BUILTIN_FLAG_POSIX_BUILTIN 0x04
|
27
|
+
+#define BUILTIN_FLAG_REQUIRES 0x08
|
28
|
+
+
|
29
|
+
|
30
|
+
#define BASE_INDENT 4
|
31
|
+
|
32
|
+
@@ -163,10 +169,18 @@ char *posix_builtins[] =
|
33
|
+
(char *)NULL
|
34
|
+
};
|
35
|
+
|
36
|
+
+/* The builtin commands that cause requirements on other files. */
|
37
|
+
+static char *requires_builtins[] =
|
38
|
+
+{
|
39
|
+
+ ".", "command", "exec", "source", "inlib",
|
40
|
+
+ (char *)NULL
|
41
|
+
+};
|
42
|
+
+
|
43
|
+
/* Forward declarations. */
|
44
|
+
static int is_special_builtin ();
|
45
|
+
static int is_assignment_builtin ();
|
46
|
+
static int is_posix_builtin ();
|
47
|
+
+static int is_requires_builtin ();
|
48
|
+
|
49
|
+
#if !defined (HAVE_RENAME)
|
50
|
+
static int rename ();
|
51
|
+
@@ -812,6 +826,9 @@ builtin_handler (self, defs, arg)
|
52
|
+
new->flags |= BUILTIN_FLAG_ASSIGNMENT;
|
53
|
+
if (is_posix_builtin (name))
|
54
|
+
new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
|
55
|
+
+ if (is_requires_builtin (name))
|
56
|
+
+ new->flags |= BUILTIN_FLAG_REQUIRES;
|
57
|
+
+
|
58
|
+
|
59
|
+
array_add ((char *)new, defs->builtins);
|
60
|
+
building_builtin = 1;
|
61
|
+
@@ -1229,11 +1246,12 @@ write_builtins (defs, structfile, extern
|
62
|
+
else
|
63
|
+
fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
|
64
|
+
|
65
|
+
- fprintf (structfile, "%s%s%s%s, %s_doc,\n",
|
66
|
+
+ fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
|
67
|
+
"BUILTIN_ENABLED | STATIC_BUILTIN",
|
68
|
+
(builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
|
69
|
+
(builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
|
70
|
+
(builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
|
71
|
+
+ (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
|
72
|
+
document_name (builtin));
|
73
|
+
|
74
|
+
fprintf
|
75
|
+
@@ -1581,6 +1599,13 @@ is_posix_builtin (name)
|
76
|
+
return (_find_in_table (name, posix_builtins));
|
77
|
+
}
|
78
|
+
|
79
|
+
+static int
|
80
|
+
+is_requires_builtin (name)
|
81
|
+
+ char *name;
|
82
|
+
+{
|
83
|
+
+ return (_find_in_table (name, requires_builtins));
|
84
|
+
+}
|
85
|
+
+
|
86
|
+
#if !defined (HAVE_RENAME)
|
87
|
+
static int
|
88
|
+
rename (from, to)
|
89
|
+
diff -up bash-4.1/doc/bash.1.requires bash-4.1/doc/bash.1
|
90
|
+
--- bash-4.1/doc/bash.1.requires 2010-08-02 17:42:41.000000000 +0200
|
91
|
+
+++ bash-4.1/doc/bash.1 2010-08-02 18:09:27.000000000 +0200
|
92
|
+
@@ -231,6 +231,14 @@ The shell becomes restricted (see
|
93
|
+
.B "RESTRICTED SHELL"
|
94
|
+
below).
|
95
|
+
.TP
|
96
|
+
+.B \-\-rpm-requires
|
97
|
+
+Produce the list of files that are required for the
|
98
|
+
+shell script to run. This implies '-n' and is subject
|
99
|
+
+to the same limitations as compile time error checking checking;
|
100
|
+
+Command substitutions, Conditional expressions and
|
101
|
+
+.BR eval
|
102
|
+
+builtin are not parsed so some dependencies may be missed.
|
103
|
+
+.TP
|
104
|
+
.B \-\-verbose
|
105
|
+
Equivalent to \fB\-v\fP.
|
106
|
+
.TP
|
107
|
+
diff -up bash-4.1/doc/bashref.texi.requires bash-4.1/doc/bashref.texi
|
108
|
+
--- bash-4.1/doc/bashref.texi.requires 2010-08-02 17:42:41.000000000 +0200
|
109
|
+
+++ bash-4.1/doc/bashref.texi 2010-08-02 18:11:58.000000000 +0200
|
110
|
+
@@ -5343,6 +5343,13 @@ standard. @xref{Bash POSIX Mode}, for a
|
111
|
+
@item --restricted
|
112
|
+
Make the shell a restricted shell (@pxref{The Restricted Shell}).
|
113
|
+
|
114
|
+
+@item --rpm-requires
|
115
|
+
+Produce the list of files that are required for the
|
116
|
+
+shell script to run. This implies '-n' and is subject
|
117
|
+
+to the same limitations as compile time error checking checking;
|
118
|
+
+Command substitutions, Conditional expressions and @command{eval}
|
119
|
+
+are not parsed so some dependencies may be missed.
|
120
|
+
+
|
121
|
+
@item --verbose
|
122
|
+
Equivalent to @option{-v}. Print shell input lines as they're read.
|
123
|
+
|
124
|
+
diff -up bash-4.1/eval.c.requires bash-4.1/eval.c
|
125
|
+
--- bash-4.1/eval.c.requires 2009-01-04 20:32:26.000000000 +0100
|
126
|
+
+++ bash-4.1/eval.c 2010-08-02 17:42:41.000000000 +0200
|
127
|
+
@@ -53,6 +53,7 @@ extern int last_command_exit_value, stdi
|
128
|
+
extern int need_here_doc;
|
129
|
+
extern int current_command_number, current_command_line_count, line_number;
|
130
|
+
extern int expand_aliases;
|
131
|
+
+extern int rpm_requires;
|
132
|
+
|
133
|
+
static void send_pwd_to_eterm __P((void));
|
134
|
+
static sighandler alrm_catcher __P((int));
|
135
|
+
@@ -136,7 +137,7 @@ reader_loop ()
|
136
|
+
|
137
|
+
if (read_command () == 0)
|
138
|
+
{
|
139
|
+
- if (interactive_shell == 0 && read_but_dont_execute)
|
140
|
+
+ if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires))
|
141
|
+
{
|
142
|
+
last_command_exit_value = EXECUTION_SUCCESS;
|
143
|
+
dispose_command (global_command);
|
144
|
+
diff -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c
|
145
|
+
--- bash-4.1/execute_cmd.c.requires 2010-08-02 17:42:41.000000000 +0200
|
146
|
+
+++ bash-4.1/execute_cmd.c 2010-08-02 17:42:41.000000000 +0200
|
147
|
+
@@ -503,6 +503,8 @@ async_redirect_stdin ()
|
148
|
+
|
149
|
+
#define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0)
|
150
|
+
|
151
|
+
+extern int rpm_requires;
|
152
|
+
+
|
153
|
+
/* Execute the command passed in COMMAND, perhaps doing it asynchrounously.
|
154
|
+
COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
|
155
|
+
ASYNCHROUNOUS, if non-zero, says to do this command in the background.
|
156
|
+
@@ -534,7 +536,13 @@ execute_command_internal (command, async
|
157
|
+
#else
|
158
|
+
if (breaking || continuing)
|
159
|
+
return (last_command_exit_value);
|
160
|
+
- if (command == 0 || read_but_dont_execute)
|
161
|
+
+ if (command == 0 || (read_but_dont_execute && !rpm_requires))
|
162
|
+
+ return (EXECUTION_SUCCESS);
|
163
|
+
+ if (rpm_requires && command->type == cm_function_def)
|
164
|
+
+ return last_command_exit_value =
|
165
|
+
+ execute_intern_function (command->value.Function_def->name,
|
166
|
+
+ command->value.Function_def->command);
|
167
|
+
+ if (read_but_dont_execute)
|
168
|
+
return (EXECUTION_SUCCESS);
|
169
|
+
#endif
|
170
|
+
|
171
|
+
@@ -5066,7 +5074,7 @@ execute_intern_function (name, function)
|
172
|
+
|
173
|
+
if (check_identifier (name, posixly_correct) == 0)
|
174
|
+
{
|
175
|
+
- if (posixly_correct && interactive_shell == 0)
|
176
|
+
+ if (posixly_correct && interactive_shell == 0 && rpm_requires == 0)
|
177
|
+
{
|
178
|
+
last_command_exit_value = EX_BADUSAGE;
|
179
|
+
jump_to_top_level (ERREXIT);
|
180
|
+
diff -up bash-4.1/execute_cmd.h.requires bash-4.1/execute_cmd.h
|
181
|
+
--- bash-4.1/execute_cmd.h.requires 2009-01-16 22:20:15.000000000 +0100
|
182
|
+
+++ bash-4.1/execute_cmd.h 2010-08-02 17:42:41.000000000 +0200
|
183
|
+
|
184
|
+
#define _EXECUTE_CMD_H_
|
185
|
+
|
186
|
+
#include "stdc.h"
|
187
|
+
+#include "variables.h"
|
188
|
+
+#include "command.h"
|
189
|
+
|
190
|
+
extern struct fd_bitmap *new_fd_bitmap __P((int));
|
191
|
+
extern void dispose_fd_bitmap __P((struct fd_bitmap *));
|
192
|
+
diff -up bash-4.1/make_cmd.c.requires bash-4.1/make_cmd.c
|
193
|
+
--- bash-4.1/make_cmd.c.requires 2009-09-11 23:26:12.000000000 +0200
|
194
|
+
+++ bash-4.1/make_cmd.c 2010-08-02 17:42:41.000000000 +0200
|
195
|
+
|
196
|
+
#include "flags.h"
|
197
|
+
#include "make_cmd.h"
|
198
|
+
#include "dispose_cmd.h"
|
199
|
+
+#include "execute_cmd.h"
|
200
|
+
#include "variables.h"
|
201
|
+
#include "subst.h"
|
202
|
+
#include "input.h"
|
203
|
+
#include "ocache.h"
|
204
|
+
#include "externs.h"
|
205
|
+
+#include "builtins.h"
|
206
|
+
+
|
207
|
+
+#include "builtins/common.h"
|
208
|
+
|
209
|
+
#if defined (JOB_CONTROL)
|
210
|
+
#include "jobs.h"
|
211
|
+
|
212
|
+
|
213
|
+
extern int line_number, current_command_line_count, parser_state;
|
214
|
+
extern int last_command_exit_value;
|
215
|
+
+extern int rpm_requires;
|
216
|
+
+
|
217
|
+
+static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz"
|
218
|
+
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
219
|
+
|
220
|
+
/* Object caching */
|
221
|
+
sh_obj_cache_t wdcache = {0, 0, 0};
|
222
|
+
@@ -820,6 +828,27 @@ make_coproc_command (name, command)
|
223
|
+
return (make_command (cm_coproc, (SIMPLE_COM *)temp));
|
224
|
+
}
|
225
|
+
|
226
|
+
+static void
|
227
|
+
+output_requirement (deptype, filename)
|
228
|
+
+const char *deptype;
|
229
|
+
+char *filename;
|
230
|
+
+{
|
231
|
+
+ if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/')))
|
232
|
+
+ return;
|
233
|
+
+
|
234
|
+
+ /*
|
235
|
+
+ if the executable is called via variable substitution we can
|
236
|
+
+ not dermine what it is at compile time.
|
237
|
+
+
|
238
|
+
+ if the executable consists only of characters not in the
|
239
|
+
+ alphabet we do not consider it a dependency just an artifact
|
240
|
+
+ of shell parsing (ex "exec < ${infile}").
|
241
|
+
+ */
|
242
|
+
+
|
243
|
+
+ if (strpbrk(filename, alphabet_set))
|
244
|
+
+ printf ("%s(%s)\n", deptype, filename);
|
245
|
+
+}
|
246
|
+
+
|
247
|
+
/* Reverse the word list and redirection list in the simple command
|
248
|
+
has just been parsed. It seems simpler to do this here the one
|
249
|
+
time then by any other method that I can think of. */
|
250
|
+
@@ -837,6 +866,27 @@ clean_simple_command (command)
|
251
|
+
REVERSE_LIST (command->value.Simple->redirects, REDIRECT *);
|
252
|
+
}
|
253
|
+
|
254
|
+
+ if (rpm_requires && command->value.Simple->words)
|
255
|
+
+ {
|
256
|
+
+ char *cmd0;
|
257
|
+
+ char *cmd1;
|
258
|
+
+ struct builtin *b;
|
259
|
+
+
|
260
|
+
+ cmd0 = command->value.Simple->words->word->word;
|
261
|
+
+ b = builtin_address_internal (cmd0, 0);
|
262
|
+
+ cmd1 = 0;
|
263
|
+
+ if (command->value.Simple->words->next)
|
264
|
+
+ cmd1 = command->value.Simple->words->next->word->word;
|
265
|
+
+
|
266
|
+
+ if (b) {
|
267
|
+
+ if ( (b->flags & REQUIRES_BUILTIN) && cmd1)
|
268
|
+
+ output_requirement ("executable", cmd1);
|
269
|
+
+ } else {
|
270
|
+
+ if (!assignment(cmd0, 0))
|
271
|
+
+ output_requirement (find_function(cmd0) ? "function" : "executable", cmd0);
|
272
|
+
+ }
|
273
|
+
+ } /*rpm_requires*/
|
274
|
+
+
|
275
|
+
parser_state &= ~PST_REDIRLIST;
|
276
|
+
return (command);
|
277
|
+
}
|
278
|
+
diff -up bash-4.1/shell.c.requires bash-4.1/shell.c
|
279
|
+
--- bash-4.1/shell.c.requires 2010-08-02 17:42:41.000000000 +0200
|
280
|
+
+++ bash-4.1/shell.c 2010-08-02 17:42:41.000000000 +0200
|
281
|
+
@@ -193,6 +193,9 @@ int have_devfd = 0;
|
282
|
+
/* The name of the .(shell)rc file. */
|
283
|
+
static char *bashrc_file = "~/.bashrc";
|
284
|
+
|
285
|
+
+/* Non-zero if we are finding the scripts requirements. */
|
286
|
+
+int rpm_requires;
|
287
|
+
+
|
288
|
+
/* Non-zero means to act more like the Bourne shell on startup. */
|
289
|
+
static int act_like_sh;
|
290
|
+
|
291
|
+
@@ -251,6 +254,7 @@ static const struct {
|
292
|
+
{ "posix", Int, &posixly_correct, (char **)0x0 },
|
293
|
+
{ "protected", Int, &protected_mode, (char **)0x0 },
|
294
|
+
{ "rcfile", Charp, (int *)0x0, &bashrc_file },
|
295
|
+
+ { "rpm-requires", Int, &rpm_requires, (char **)0x0 },
|
296
|
+
#if defined (RESTRICTED_SHELL)
|
297
|
+
{ "restricted", Int, &restricted, (char **)0x0 },
|
298
|
+
#endif
|
299
|
+
@@ -485,6 +489,12 @@ main (argc, argv, env)
|
300
|
+
if (dump_translatable_strings)
|
301
|
+
read_but_dont_execute = 1;
|
302
|
+
|
303
|
+
+ if (rpm_requires)
|
304
|
+
+ {
|
305
|
+
+ read_but_dont_execute = 1;
|
306
|
+
+ initialize_shell_builtins ();
|
307
|
+
+ }
|
308
|
+
+
|
309
|
+
if (running_setuid && privileged_mode == 0)
|
310
|
+
disable_priv_mode ();
|
311
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
--- bash-3.0/builtins/setattr.def.setlocale 2005-08-08 12:22:42.000000000 +0100
|
2
|
+
+++ bash-3.0/builtins/setattr.def 2005-08-08 12:25:16.000000000 +0100
|
3
|
+
|
4
|
+
|
5
|
+
if (var && (exported_p (var) || (attribute & att_exported)))
|
6
|
+
array_needs_making++; /* XXX */
|
7
|
+
+
|
8
|
+
+ if (var)
|
9
|
+
+ stupidly_hack_special_variables (name);
|
10
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
diff -up bash-4.2-rc2/tests/exec.right.tty_tests bash-4.2-rc2/tests/exec.right
|
2
|
+
--- bash-4.2-rc2/tests/exec.right.tty_tests 2011-02-09 10:42:48.000000000 +0100
|
3
|
+
+++ bash-4.2-rc2/tests/exec.right 2011-02-09 10:42:59.000000000 +0100
|
4
|
+
@@ -50,7 +50,6 @@ this is ohio-state
|
5
|
+
0
|
6
|
+
1
|
7
|
+
testb
|
8
|
+
-expand_aliases on
|
9
|
+
1
|
10
|
+
1
|
11
|
+
1
|
12
|
+
diff -up bash-4.2-rc2/tests/execscript.tty_tests bash-4.2-rc2/tests/execscript
|
13
|
+
--- bash-4.2-rc2/tests/execscript.tty_tests 2010-12-27 22:01:02.000000000 +0100
|
14
|
+
+++ bash-4.2-rc2/tests/execscript 2011-02-09 10:42:34.000000000 +0100
|
15
|
+
@@ -107,8 +107,6 @@ ${THIS_SH} ./exec6.sub
|
16
|
+
# checks for properly deciding what constitutes an executable file
|
17
|
+
${THIS_SH} ./exec7.sub
|
18
|
+
|
19
|
+
-${THIS_SH} -i ./exec8.sub
|
20
|
+
-
|
21
|
+
${THIS_SH} ./exec9.sub
|
22
|
+
|
23
|
+
true | `echo true` &
|
24
|
+
diff -up bash-4.2-rc2/tests/read.right.tty_tests bash-4.2-rc2/tests/read.right
|
25
|
+
--- bash-4.2-rc2/tests/read.right.tty_tests 2010-12-21 16:49:00.000000000 +0100
|
26
|
+
+++ bash-4.2-rc2/tests/read.right 2011-02-09 10:42:34.000000000 +0100
|
27
|
+
@@ -33,14 +33,6 @@ a = abcdefg
|
28
|
+
a = xyz
|
29
|
+
a = -xyz 123-
|
30
|
+
a = abc
|
31
|
+
-timeout 1: ok
|
32
|
+
-
|
33
|
+
-timeout 2: ok
|
34
|
+
-
|
35
|
+
-./read2.sub: line 23: read: -3: invalid timeout specification
|
36
|
+
-1
|
37
|
+
-
|
38
|
+
-abcde
|
39
|
+
./read3.sub: line 4: read: -1: invalid number
|
40
|
+
abc
|
41
|
+
ab
|
42
|
+
diff -up bash-4.2-rc2/tests/read.tests.tty_tests bash-4.2-rc2/tests/read.tests
|
43
|
+
--- bash-4.2-rc2/tests/read.tests.tty_tests 2008-09-06 19:09:11.000000000 +0200
|
44
|
+
+++ bash-4.2-rc2/tests/read.tests 2011-02-09 10:42:34.000000000 +0100
|
45
|
+
@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; re
|
46
|
+
# test read -d delim behavior
|
47
|
+
${THIS_SH} ./read1.sub
|
48
|
+
|
49
|
+
-# test read -t timeout behavior
|
50
|
+
-${THIS_SH} ./read2.sub
|
51
|
+
-
|
52
|
+
# test read -n nchars behavior
|
53
|
+
${THIS_SH} ./read3.sub
|
54
|
+
|
@@ -0,0 +1,78 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-001
|
6
|
+
|
7
|
+
Bug-Reported-by: Juergen Daubert <jue@jue.li>
|
8
|
+
Bug-Reference-ID: <20110214175132.GA19813@jue.netz>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00125.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When running in Posix mode, bash does not correctly expand the right-hand
|
14
|
+
side of a double-quoted word expansion containing single quotes.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/subst.c 2011-01-02 16:12:51.000000000 -0500
|
19
|
+
--- subst.c 2011-02-19 00:00:00.000000000 -0500
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
/* The handling of dolbrace_state needs to agree with the code in parse.y:
|
24
|
+
! parse_matched_pair() */
|
25
|
+
! dolbrace_state = 0;
|
26
|
+
! if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
|
27
|
+
! dolbrace_state = (flags & SX_POSIXEXP) ? DOLBRACE_QUOTE : DOLBRACE_PARAM;
|
28
|
+
|
29
|
+
i = *sindex;
|
30
|
+
|
31
|
+
|
32
|
+
/* The handling of dolbrace_state needs to agree with the code in parse.y:
|
33
|
+
! parse_matched_pair(). The different initial value is to handle the
|
34
|
+
! case where this function is called to parse the word in
|
35
|
+
! ${param op word} (SX_WORD). */
|
36
|
+
! dolbrace_state = (flags & SX_WORD) ? DOLBRACE_WORD : DOLBRACE_PARAM;
|
37
|
+
! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && (flags & SX_POSIXEXP))
|
38
|
+
! dolbrace_state = DOLBRACE_QUOTE;
|
39
|
+
|
40
|
+
i = *sindex;
|
41
|
+
***************
|
42
|
+
|
43
|
+
/* Extract the contents of the ${ ... } expansion
|
44
|
+
according to the Posix.2 rules. */
|
45
|
+
! value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#') ? SX_POSIXEXP : 0);
|
46
|
+
if (string[sindex] == RBRACE)
|
47
|
+
sindex++;
|
48
|
+
|
49
|
+
/* Extract the contents of the ${ ... } expansion
|
50
|
+
according to the Posix.2 rules. */
|
51
|
+
! value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#' || c =='/' || c == '^' || c == ',' || c ==':') ? SX_POSIXEXP|SX_WORD : SX_WORD);
|
52
|
+
if (string[sindex] == RBRACE)
|
53
|
+
sindex++;
|
54
|
+
*** ../bash-4.2-patched/subst.h 2010-12-02 20:21:29.000000000 -0500
|
55
|
+
--- subst.h 2011-02-16 21:12:09.000000000 -0500
|
56
|
+
***************
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
define SX_POSIXEXP 0x0100 /* extracting new Posix pattern removal expansions in extract_dollar_brace_string */
|
61
|
+
+
|
62
|
+
|
63
|
+
/* Remove backslashes which are quoting backquotes from STRING. Modifies
|
64
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
65
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
66
|
+
***************
|
67
|
+
|
68
|
+
looks for to find the patch level (for the sccs version string). */
|
69
|
+
|
70
|
+
!
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
looks for to find the patch level (for the sccs version string). */
|
75
|
+
|
76
|
+
!
|
77
|
+
|
78
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-002
|
6
|
+
|
7
|
+
Bug-Reported-by: Clark J. Wang <dearvoid@gmail.com>
|
8
|
+
Bug-Reference-ID: <AANLkTimGbW7aC4E5infXP6ku5WPci4t=xVc+L1SyHqrD
.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
The readline vi-mode `cc', `dd', and `yy' commands failed to modify the
|
14
|
+
entire line.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/lib/readline/vi_mode.c 2010-11-20 19:51:39.000000000 -0500
|
19
|
+
--- lib/readline/vi_mode.c 2011-02-17 20:24:25.000000000 -0500
|
20
|
+
***************
|
21
|
+
|
22
|
+
_rl_vi_last_motion = c;
|
23
|
+
RL_UNSETSTATE (RL_STATE_VIMOTION);
|
24
|
+
! return (0);
|
25
|
+
}
|
26
|
+
if defined (READLINE_CALLBACKS)
|
27
|
+
|
28
|
+
_rl_vi_last_motion = c;
|
29
|
+
RL_UNSETSTATE (RL_STATE_VIMOTION);
|
30
|
+
! return (vidomove_dispatch (m));
|
31
|
+
}
|
32
|
+
if defined (READLINE_CALLBACKS)
|
33
|
+
*** ../bash-4.2-patched/lib/readline/callback.c 2010-06-06 12:18:58.000000000 -0400
|
34
|
+
--- lib/readline/callback.c 2011-02-17 20:43:28.000000000 -0500
|
35
|
+
***************
|
36
|
+
|
37
|
+
|
38
|
+
/* Should handle everything, including cleanup, numeric arguments,
|
39
|
+
and turning off RL_STATE_VIMOTION */
|
40
|
+
+ if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
|
41
|
+
+ _rl_internal_char_cleanup ();
|
42
|
+
+
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
46
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
47
|
+
***************
|
48
|
+
|
49
|
+
looks for to find the patch level (for the sccs version string). */
|
50
|
+
|
51
|
+
!
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
looks for to find the patch level (for the sccs version string). */
|
56
|
+
|
57
|
+
!
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,318 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-003
|
6
|
+
|
7
|
+
Bug-Reported-by: Clark J. Wang <dearvoid@gmail.com>
|
8
|
+
Bug-Reference-ID: <AANLkTikZ_rVV-frR8Fh0PzhXnMKnm5XsUR-F3qtPPs5G@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00136.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When using the pattern replacement and pattern removal word expansions, bash
|
14
|
+
miscalculates the possible match length in the presence of an unescaped left
|
15
|
+
bracket without a closing right bracket, resulting in a failure to match
|
16
|
+
the pattern.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/lib/glob/gmisc.c 2011-02-05 16:11:17.000000000 -0500
|
21
|
+
--- lib/glob/gmisc.c 2011-02-18 23:53:42.000000000 -0500
|
22
|
+
***************
|
23
|
+
|
24
|
+
size_t wmax;
|
25
|
+
{
|
26
|
+
! wchar_t wc, *wbrack;
|
27
|
+
! int matlen, t, in_cclass, in_collsym, in_equiv;
|
28
|
+
|
29
|
+
if (*wpat == 0)
|
30
|
+
|
31
|
+
size_t wmax;
|
32
|
+
{
|
33
|
+
! wchar_t wc;
|
34
|
+
! int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
|
35
|
+
|
36
|
+
if (*wpat == 0)
|
37
|
+
***************
|
38
|
+
|
39
|
+
case L'[':
|
40
|
+
/* scan for ending `]', skipping over embedded [:...:] */
|
41
|
+
! wbrack = wpat;
|
42
|
+
wc = *wpat++;
|
43
|
+
do
|
44
|
+
|
45
|
+
case L'[':
|
46
|
+
/* scan for ending `]', skipping over embedded [:...:] */
|
47
|
+
! bracklen = 1;
|
48
|
+
wc = *wpat++;
|
49
|
+
do
|
50
|
+
***************
|
51
|
+
|
52
|
+
if (wc == 0)
|
53
|
+
{
|
54
|
+
! matlen += wpat - wbrack - 1; /* incremented below */
|
55
|
+
! break;
|
56
|
+
}
|
57
|
+
else if (wc == L'\\')
|
58
|
+
{
|
59
|
+
! wc = *wpat++;
|
60
|
+
! if (*wpat == 0)
|
61
|
+
! break;
|
62
|
+
}
|
63
|
+
else if (wc == L'[' && *wpat == L':') /* character class */
|
64
|
+
{
|
65
|
+
wpat++;
|
66
|
+
in_cclass = 1;
|
67
|
+
}
|
68
|
+
|
69
|
+
if (wc == 0)
|
70
|
+
{
|
71
|
+
! wpat--; /* back up to NUL */
|
72
|
+
! matlen += bracklen;
|
73
|
+
! goto bad_bracket;
|
74
|
+
}
|
75
|
+
else if (wc == L'\\')
|
76
|
+
{
|
77
|
+
! /* *wpat == backslash-escaped character */
|
78
|
+
! bracklen++;
|
79
|
+
! /* If the backslash or backslash-escape ends the string,
|
80
|
+
! bail. The ++wpat skips over the backslash escape */
|
81
|
+
! if (*wpat == 0 || *++wpat == 0)
|
82
|
+
! {
|
83
|
+
! matlen += bracklen;
|
84
|
+
! goto bad_bracket;
|
85
|
+
! }
|
86
|
+
}
|
87
|
+
else if (wc == L'[' && *wpat == L':') /* character class */
|
88
|
+
{
|
89
|
+
wpat++;
|
90
|
+
+ bracklen++;
|
91
|
+
in_cclass = 1;
|
92
|
+
}
|
93
|
+
***************
|
94
|
+
|
95
|
+
|
96
|
+
{
|
97
|
+
wpat++;
|
98
|
+
+ bracklen++;
|
99
|
+
in_cclass = 0;
|
100
|
+
}
|
101
|
+
***************
|
102
|
+
|
103
|
+
{
|
104
|
+
wpat++;
|
105
|
+
if (*wpat == L']') /* right bracket can appear as collating symbol */
|
106
|
+
! wpat++;
|
107
|
+
in_collsym = 1;
|
108
|
+
}
|
109
|
+
|
110
|
+
{
|
111
|
+
wpat++;
|
112
|
+
+ bracklen++;
|
113
|
+
if (*wpat == L']') /* right bracket can appear as collating symbol */
|
114
|
+
! {
|
115
|
+
! wpat++;
|
116
|
+
! bracklen++;
|
117
|
+
! }
|
118
|
+
in_collsym = 1;
|
119
|
+
}
|
120
|
+
***************
|
121
|
+
|
122
|
+
|
123
|
+
{
|
124
|
+
wpat++;
|
125
|
+
+ bracklen++;
|
126
|
+
in_collsym = 0;
|
127
|
+
}
|
128
|
+
***************
|
129
|
+
|
130
|
+
{
|
131
|
+
wpat++;
|
132
|
+
if (*wpat == L']') /* right bracket can appear as equivalence class */
|
133
|
+
! wpat++;
|
134
|
+
in_equiv = 1;
|
135
|
+
}
|
136
|
+
|
137
|
+
{
|
138
|
+
wpat++;
|
139
|
+
+ bracklen++;
|
140
|
+
if (*wpat == L']') /* right bracket can appear as equivalence class */
|
141
|
+
! {
|
142
|
+
! wpat++;
|
143
|
+
! bracklen++;
|
144
|
+
! }
|
145
|
+
in_equiv = 1;
|
146
|
+
}
|
147
|
+
***************
|
148
|
+
|
149
|
+
|
150
|
+
{
|
151
|
+
wpat++;
|
152
|
+
+ bracklen++;
|
153
|
+
in_equiv = 0;
|
154
|
+
}
|
155
|
+
+ else
|
156
|
+
+ bracklen++;
|
157
|
+
}
|
158
|
+
while ((wc = *wpat++) != L']');
|
159
|
+
matlen++; /* bracket expression can only match one char */
|
160
|
+
+ bad_bracket:
|
161
|
+
break;
|
162
|
+
}
|
163
|
+
***************
|
164
|
+
|
165
|
+
size_t max;
|
166
|
+
{
|
167
|
+
! char c, *brack;
|
168
|
+
! int matlen, t, in_cclass, in_collsym, in_equiv;
|
169
|
+
|
170
|
+
if (*pat == 0)
|
171
|
+
|
172
|
+
size_t max;
|
173
|
+
{
|
174
|
+
! char c;
|
175
|
+
! int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
|
176
|
+
|
177
|
+
if (*pat == 0)
|
178
|
+
***************
|
179
|
+
|
180
|
+
case '[':
|
181
|
+
/* scan for ending `]', skipping over embedded [:...:] */
|
182
|
+
! brack = pat;
|
183
|
+
c = *pat++;
|
184
|
+
do
|
185
|
+
|
186
|
+
case '[':
|
187
|
+
/* scan for ending `]', skipping over embedded [:...:] */
|
188
|
+
! bracklen = 1;
|
189
|
+
c = *pat++;
|
190
|
+
do
|
191
|
+
***************
|
192
|
+
|
193
|
+
if (c == 0)
|
194
|
+
{
|
195
|
+
! matlen += pat - brack - 1; /* incremented below */
|
196
|
+
! break;
|
197
|
+
}
|
198
|
+
else if (c == '\\')
|
199
|
+
{
|
200
|
+
! c = *pat++;
|
201
|
+
! if (*pat == 0)
|
202
|
+
! break;
|
203
|
+
}
|
204
|
+
else if (c == '[' && *pat == ':') /* character class */
|
205
|
+
{
|
206
|
+
pat++;
|
207
|
+
in_cclass = 1;
|
208
|
+
}
|
209
|
+
|
210
|
+
if (c == 0)
|
211
|
+
{
|
212
|
+
! pat--; /* back up to NUL */
|
213
|
+
! matlen += bracklen;
|
214
|
+
! goto bad_bracket;
|
215
|
+
}
|
216
|
+
else if (c == '\\')
|
217
|
+
{
|
218
|
+
! /* *pat == backslash-escaped character */
|
219
|
+
! bracklen++;
|
220
|
+
! /* If the backslash or backslash-escape ends the string,
|
221
|
+
! bail. The ++pat skips over the backslash escape */
|
222
|
+
! if (*pat == 0 || *++pat == 0)
|
223
|
+
! {
|
224
|
+
! matlen += bracklen;
|
225
|
+
! goto bad_bracket;
|
226
|
+
! }
|
227
|
+
}
|
228
|
+
else if (c == '[' && *pat == ':') /* character class */
|
229
|
+
{
|
230
|
+
pat++;
|
231
|
+
+ bracklen++;
|
232
|
+
in_cclass = 1;
|
233
|
+
}
|
234
|
+
***************
|
235
|
+
|
236
|
+
|
237
|
+
{
|
238
|
+
pat++;
|
239
|
+
+ bracklen++;
|
240
|
+
in_cclass = 0;
|
241
|
+
}
|
242
|
+
***************
|
243
|
+
|
244
|
+
{
|
245
|
+
pat++;
|
246
|
+
if (*pat == ']') /* right bracket can appear as collating symbol */
|
247
|
+
! pat++;
|
248
|
+
in_collsym = 1;
|
249
|
+
}
|
250
|
+
|
251
|
+
{
|
252
|
+
pat++;
|
253
|
+
+ bracklen++;
|
254
|
+
if (*pat == ']') /* right bracket can appear as collating symbol */
|
255
|
+
! {
|
256
|
+
! pat++;
|
257
|
+
! bracklen++;
|
258
|
+
! }
|
259
|
+
in_collsym = 1;
|
260
|
+
}
|
261
|
+
***************
|
262
|
+
|
263
|
+
|
264
|
+
{
|
265
|
+
pat++;
|
266
|
+
+ bracklen++;
|
267
|
+
in_collsym = 0;
|
268
|
+
}
|
269
|
+
***************
|
270
|
+
|
271
|
+
{
|
272
|
+
pat++;
|
273
|
+
if (*pat == ']') /* right bracket can appear as equivalence class */
|
274
|
+
! pat++;
|
275
|
+
in_equiv = 1;
|
276
|
+
}
|
277
|
+
|
278
|
+
{
|
279
|
+
pat++;
|
280
|
+
+ bracklen++;
|
281
|
+
if (*pat == ']') /* right bracket can appear as equivalence class */
|
282
|
+
! {
|
283
|
+
! pat++;
|
284
|
+
! bracklen++;
|
285
|
+
! }
|
286
|
+
in_equiv = 1;
|
287
|
+
}
|
288
|
+
***************
|
289
|
+
|
290
|
+
|
291
|
+
{
|
292
|
+
pat++;
|
293
|
+
+ bracklen++;
|
294
|
+
in_equiv = 0;
|
295
|
+
}
|
296
|
+
+ else
|
297
|
+
+ bracklen++;
|
298
|
+
}
|
299
|
+
while ((c = *pat++) != ']');
|
300
|
+
matlen++; /* bracket expression can only match one char */
|
301
|
+
+ bad_bracket:
|
302
|
+
break;
|
303
|
+
}
|
304
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
305
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
306
|
+
***************
|
307
|
+
|
308
|
+
looks for to find the patch level (for the sccs version string). */
|
309
|
+
|
310
|
+
!
|
311
|
+
|
312
|
+
|
313
|
+
|
314
|
+
looks for to find the patch level (for the sccs version string). */
|
315
|
+
|
316
|
+
!
|
317
|
+
|
318
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-004
|
6
|
+
|
7
|
+
Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
|
8
|
+
Bug-Reference-ID: <201102182106.17834.vapier@gentoo.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00222.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When used in contexts where word splitting and quote removal were not
|
14
|
+
performed, such as pattern removal or pattern substitution, empty strings
|
15
|
+
(either literal or resulting from quoted variables that were unset or
|
16
|
+
null) were not matched correctly, resulting in failure.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/subst.c 2011-01-02 16:12:51.000000000 -0500
|
21
|
+
--- subst.c 2011-02-18 22:30:13.000000000 -0500
|
22
|
+
***************
|
23
|
+
|
24
|
+
if (string == 0 || *string == '\0')
|
25
|
+
return (WORD_LIST *)NULL;
|
26
|
+
|
27
|
+
! td.flags = 0;
|
28
|
+
td.word = string;
|
29
|
+
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
|
30
|
+
return (tresult);
|
31
|
+
|
32
|
+
if (string == 0 || *string == '\0')
|
33
|
+
return (WORD_LIST *)NULL;
|
34
|
+
|
35
|
+
! td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */
|
36
|
+
td.word = string;
|
37
|
+
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
|
38
|
+
return (tresult);
|
39
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
40
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
41
|
+
***************
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
looks for to find the patch level (for the sccs version string). */
|
50
|
+
|
51
|
+
!
|
52
|
+
|
53
|
+
|
@@ -0,0 +1,131 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-005
|
6
|
+
|
7
|
+
Bug-Reported-by: Dennis Williamson <dennistwilliamson@gmail.com>
|
8
|
+
Bug-Reference-ID: <AANLkTikDbEV5rnbPc0zOfmZfBcg0xGetzLLzK+KjRiNa@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00147.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Systems that use tzset() to set the local timezone require the TZ variable
|
14
|
+
to be in the environment. Bash must make sure the environment has been
|
15
|
+
modified with any updated value for TZ before calling tzset(). This
|
16
|
+
affects prompt string expansions and the `%T' printf conversion specification
|
17
|
+
on systems that do not allow bash to supply a replacement for getenv(3).
|
18
|
+
|
19
|
+
Patch (apply with `patch -p0'):
|
20
|
+
|
21
|
+
*** ../bash-4.2-patched/variables.h 2010-12-02 20:22:01.000000000 -0500
|
22
|
+
--- variables.h 2011-02-19 19:57:12.000000000 -0500
|
23
|
+
***************
|
24
|
+
|
25
|
+
|
26
|
+
extern void sort_variables __P((SHELL_VAR **));
|
27
|
+
|
28
|
+
+ extern int chkexport __P((char *));
|
29
|
+
extern void maybe_make_export_env __P((void));
|
30
|
+
extern void update_export_env_inplace __P((char *, int, char *));
|
31
|
+
*** ../bash-4.2-patched/variables.c 2011-01-24 20:07:48.000000000 -0500
|
32
|
+
--- variables.c 2011-02-19 20:04:50.000000000 -0500
|
33
|
+
***************
|
34
|
+
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
+ int
|
39
|
+
+ chkexport (name)
|
40
|
+
+ char *name;
|
41
|
+
+ {
|
42
|
+
+ SHELL_VAR *v;
|
43
|
+
+
|
44
|
+
+ v = find_variable (name);
|
45
|
+
+ if (exported_p (v))
|
46
|
+
+ {
|
47
|
+
+ array_needs_making = 1;
|
48
|
+
+ maybe_make_export_env ();
|
49
|
+
+ return 1;
|
50
|
+
+ }
|
51
|
+
+ return 0;
|
52
|
+
+ }
|
53
|
+
+
|
54
|
+
void
|
55
|
+
maybe_make_export_env ()
|
56
|
+
***************
|
57
|
+
|
58
|
+
{ "TEXTDOMAINDIR", sv_locale },
|
59
|
+
|
60
|
+
!
|
61
|
+
{ "TZ", sv_tz },
|
62
|
+
endif
|
63
|
+
|
64
|
+
{ "TEXTDOMAINDIR", sv_locale },
|
65
|
+
|
66
|
+
!
|
67
|
+
{ "TZ", sv_tz },
|
68
|
+
endif
|
69
|
+
***************
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
!
|
74
|
+
void
|
75
|
+
sv_tz (name)
|
76
|
+
char *name;
|
77
|
+
{
|
78
|
+
! tzset ();
|
79
|
+
}
|
80
|
+
endif
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
!
|
85
|
+
void
|
86
|
+
sv_tz (name)
|
87
|
+
char *name;
|
88
|
+
{
|
89
|
+
! if (chkexport (name))
|
90
|
+
! tzset ();
|
91
|
+
}
|
92
|
+
endif
|
93
|
+
*** ../bash-4.2-patched/parse.y 2011-01-02 15:48:11.000000000 -0500
|
94
|
+
--- parse.y 2011-02-19 20:05:00.000000000 -0500
|
95
|
+
***************
|
96
|
+
|
97
|
+
|
98
|
+
/* Make the current time/date into a string. */
|
99
|
+
(void) time (&the_time);
|
100
|
+
+
|
101
|
+
+ sv_tz ("TZ"); /* XXX -- just make sure */
|
102
|
+
+
|
103
|
+
tm = localtime (&the_time);
|
104
|
+
|
105
|
+
*** ../bash-4.2-patched/builtins/printf.def 2010-11-23 10:02:55.000000000 -0500
|
106
|
+
--- builtins/printf.def 2011-02-19 20:05:04.000000000 -0500
|
107
|
+
***************
|
108
|
+
|
109
|
+
|
110
|
+
else
|
111
|
+
secs = arg;
|
112
|
+
+
|
113
|
+
+ sv_tz ("TZ"); /* XXX -- just make sure */
|
114
|
+
+
|
115
|
+
tm = localtime (&secs);
|
116
|
+
n = strftime (timebuf, sizeof (timebuf), timefmt, tm);
|
117
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
118
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
119
|
+
***************
|
120
|
+
|
121
|
+
looks for to find the patch level (for the sccs version string). */
|
122
|
+
|
123
|
+
!
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
looks for to find the patch level (for the sccs version string). */
|
128
|
+
|
129
|
+
!
|
130
|
+
|
131
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-006
|
6
|
+
|
7
|
+
Bug-Reported-by: Allan McRae <allan@archlinux.org>
|
8
|
+
Bug-Reference-ID: <4D6D0D0B.50908@archlinux.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00001.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
A problem with bash42-005 caused it to dump core if TZ was unset.
|
14
|
+
|
15
|
+
Patch (apply with `patch -p0'):
|
16
|
+
|
17
|
+
*** ../bash-4.2-patched/variables.c 2011-02-25 12:07:41.000000000 -0500
|
18
|
+
--- variables.c 2011-03-01 10:13:04.000000000 -0500
|
19
|
+
***************
|
20
|
+
|
21
|
+
|
22
|
+
v = find_variable (name);
|
23
|
+
! if (exported_p (v))
|
24
|
+
{
|
25
|
+
array_needs_making = 1;
|
26
|
+
|
27
|
+
|
28
|
+
v = find_variable (name);
|
29
|
+
! if (v && exported_p (v))
|
30
|
+
{
|
31
|
+
array_needs_making = 1;
|
32
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
33
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
34
|
+
***************
|
35
|
+
|
36
|
+
looks for to find the patch level (for the sccs version string). */
|
37
|
+
|
38
|
+
!
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-007
|
6
|
+
|
7
|
+
Bug-Reported-by: Matthias Klose <doko@debian.org>
|
8
|
+
Bug-Reference-ID: <4D6FD2AC.1010500@debian.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00015.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When used in contexts where word splitting and quote removal were not
|
14
|
+
performed, such as case statement word expansion, empty strings
|
15
|
+
(either literal or resulting from quoted variables that were unset or
|
16
|
+
null) were not expanded correctly, resulting in failure.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/subst.c 2011-02-25 12:03:58.000000000 -0500
|
21
|
+
--- subst.c 2011-03-03 14:08:23.000000000 -0500
|
22
|
+
***************
|
23
|
+
|
24
|
+
|
25
|
+
if (ifs_firstc == 0)
|
26
|
+
endif
|
27
|
+
word->flags |= W_NOSPLIT;
|
28
|
+
+ word->flags |= W_NOSPLIT2;
|
29
|
+
result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
|
30
|
+
expand_no_split_dollar_star = 0;
|
31
|
+
|
32
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
33
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
34
|
+
***************
|
35
|
+
|
36
|
+
looks for to find the patch level (for the sccs version string). */
|
37
|
+
|
38
|
+
!
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-008
|
6
|
+
|
7
|
+
Bug-Reported-by: Doug McMahon <mc2man@optonline.net>
|
8
|
+
Bug-Reference-ID: <1299441211.2535.11.camel@doug-XPS-M1330>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00050.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash-4.2 does not attempt to save the shell history on receipt of a
|
14
|
+
terminating signal that is handled synchronously. Unfortunately, the
|
15
|
+
`close' button on most X11 terminal emulators sends SIGHUP, which
|
16
|
+
kills the shell.
|
17
|
+
|
18
|
+
This is a very small patch to save the history in the case that an
|
19
|
+
interactive shell receives a SIGHUP or SIGTERM while in readline and
|
20
|
+
reading a command.
|
21
|
+
|
22
|
+
The next version of bash will do this differently.
|
23
|
+
|
24
|
+
Patch (apply with `patch -p0'):
|
25
|
+
|
26
|
+
*** ../bash-4.2-patched/sig.c Tue Nov 23 08:21:22 2010
|
27
|
+
--- sig.c Tue Mar 8 21:28:32 2011
|
28
|
+
***************
|
29
|
+
|
30
|
+
|
31
|
+
if defined (READLINE)
|
32
|
+
include "bashline.h"
|
33
|
+
+
|
34
|
+
endif
|
35
|
+
|
36
|
+
***************
|
37
|
+
|
38
|
+
|
39
|
+
extern int history_lines_this_session;
|
40
|
+
endif
|
41
|
+
+ extern int no_line_editing;
|
42
|
+
|
43
|
+
extern void initialize_siglist ();
|
44
|
+
***************
|
45
|
+
|
46
|
+
if defined (HISTORY)
|
47
|
+
/* XXX - will inhibit history file being written */
|
48
|
+
! history_lines_this_session = 0;
|
49
|
+
endif
|
50
|
+
terminate_immediately = 0;
|
51
|
+
|
52
|
+
if defined (HISTORY)
|
53
|
+
/* XXX - will inhibit history file being written */
|
54
|
+
!
|
55
|
+
! if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0))
|
56
|
+
!
|
57
|
+
! history_lines_this_session = 0;
|
58
|
+
endif
|
59
|
+
terminate_immediately = 0;
|
60
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
61
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
62
|
+
***************
|
63
|
+
|
64
|
+
looks for to find the patch level (for the sccs version string). */
|
65
|
+
|
66
|
+
!
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
looks for to find the patch level (for the sccs version string). */
|
71
|
+
|
72
|
+
!
|
73
|
+
|
74
|
+
|
@@ -0,0 +1,82 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-009
|
6
|
+
|
7
|
+
Bug-Reported-by: <piuma@piumalab.org>
|
8
|
+
Bug-Reference-ID: <4DAAC0DB.7060606@piumalab.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00075.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Under certain circumstances, running `fc -l' two times in succession with a
|
14
|
+
relative history offset at the end of the history will result in an incorrect
|
15
|
+
calculation of the last history entry and a seg fault.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/builtins/fc.def 2010-05-30 18:25:38.000000000 -0400
|
20
|
+
--- builtins/fc.def 2011-04-19 15:46:17.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
/* XXX */
|
25
|
+
! if (saved_command_line_count > 0 && i == last_hist && hlist[last_hist] == 0)
|
26
|
+
while (last_hist >= 0 && hlist[last_hist] == 0)
|
27
|
+
last_hist--;
|
28
|
+
|
29
|
+
|
30
|
+
/* XXX */
|
31
|
+
! if (i == last_hist && hlist[last_hist] == 0)
|
32
|
+
while (last_hist >= 0 && hlist[last_hist] == 0)
|
33
|
+
last_hist--;
|
34
|
+
***************
|
35
|
+
|
36
|
+
{
|
37
|
+
int sign, n, clen, rh;
|
38
|
+
! register int i, j;
|
39
|
+
register char *s;
|
40
|
+
|
41
|
+
|
42
|
+
{
|
43
|
+
int sign, n, clen, rh;
|
44
|
+
! register int i, j, last_hist;
|
45
|
+
register char *s;
|
46
|
+
|
47
|
+
***************
|
48
|
+
|
49
|
+
calculation as if it were on. */
|
50
|
+
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
|
51
|
+
! i -= rh + hist_last_line_added;
|
52
|
+
|
53
|
+
/* No specification defaults to most recent command. */
|
54
|
+
|
55
|
+
calculation as if it were on. */
|
56
|
+
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
|
57
|
+
! last_hist = i - rh - hist_last_line_added;
|
58
|
+
!
|
59
|
+
! if (i == last_hist && hlist[last_hist] == 0)
|
60
|
+
! while (last_hist >= 0 && hlist[last_hist] == 0)
|
61
|
+
! last_hist--;
|
62
|
+
! if (last_hist < 0)
|
63
|
+
! return (-1);
|
64
|
+
!
|
65
|
+
! i = last_hist;
|
66
|
+
|
67
|
+
/* No specification defaults to most recent command. */
|
68
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
69
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
70
|
+
***************
|
71
|
+
|
72
|
+
looks for to find the patch level (for the sccs version string). */
|
73
|
+
|
74
|
+
!
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
looks for to find the patch level (for the sccs version string). */
|
79
|
+
|
80
|
+
!
|
81
|
+
|
82
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-010
|
6
|
+
|
7
|
+
Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
|
8
|
+
Bug-Reference-ID: <201104122356.20160.vapier@gentoo.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00058.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash did not correctly print/reproduce here documents attached to commands
|
14
|
+
inside compound commands such as arithmetic for loops and user-specified
|
15
|
+
subshells. This affected the execution of such commands inside a shell
|
16
|
+
function when the function definition is saved and later restored using
|
17
|
+
`.' or `eval'.
|
18
|
+
|
19
|
+
Patch (apply with `patch -p0'):
|
20
|
+
|
21
|
+
*** ../bash-4.2-patched/print_cmd.c 2010-05-30 18:34:08.000000000 -0400
|
22
|
+
--- print_cmd.c 2011-04-14 10:43:18.000000000 -0400
|
23
|
+
***************
|
24
|
+
|
25
|
+
|
26
|
+
skip_this_indent++;
|
27
|
+
make_command_string_internal (command->value.Subshell->command);
|
28
|
+
+ PRINT_DEFERRED_HEREDOCS ("");
|
29
|
+
cprintf (" )");
|
30
|
+
break;
|
31
|
+
***************
|
32
|
+
|
33
|
+
|
34
|
+
indentation += indentation_amount;
|
35
|
+
make_command_string_internal (arith_for_command->action);
|
36
|
+
+ PRINT_DEFERRED_HEREDOCS ("");
|
37
|
+
semicolon ();
|
38
|
+
indentation -= indentation_amount;
|
39
|
+
***************
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
make_command_string_internal (group_command->command);
|
44
|
+
+ PRINT_DEFERRED_HEREDOCS ("");
|
45
|
+
|
46
|
+
if (inside_function_def)
|
47
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
48
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
49
|
+
***************
|
50
|
+
|
51
|
+
looks for to find the patch level (for the sccs version string). */
|
52
|
+
|
53
|
+
!
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
looks for to find the patch level (for the sccs version string). */
|
58
|
+
|
59
|
+
!
|
60
|
+
|
61
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-011
|
6
|
+
|
7
|
+
Bug-Reported-by: "David Parks" <davidparks21 .com>
|
8
|
+
Bug-Reference-ID: <014101cc82c6$46ac1540$d4043fc0$@com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-10/msg00031.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Overwriting a value in an associative array causes the memory allocated to
|
14
|
+
store the key on the second and subsequent assignments to leak.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/assoc.c 2009-08-05 20:19:40.000000000 -0400
|
19
|
+
--- assoc.c 2011-10-04 20:23:07.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
if (b == 0)
|
24
|
+
return -1;
|
25
|
+
+ /* If we are overwriting an existing element's value, we're not going to
|
26
|
+
+ use the key. Nothing in the array assignment code path frees the key
|
27
|
+
+ string, so we can free it here to avoid a memory leak. */
|
28
|
+
+ if (b->key != key)
|
29
|
+
+ free (key);
|
30
|
+
FREE (b->data);
|
31
|
+
b->data = value ? savestring (value) : (char *)0;
|
32
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
33
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
34
|
+
***************
|
35
|
+
|
36
|
+
looks for to find the patch level (for the sccs version string). */
|
37
|
+
|
38
|
+
!
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,151 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-012
|
6
|
+
|
7
|
+
Bug-Reported-by: Rui Santos <rsantos@grupopie.com>
|
8
|
+
Bug-Reference-ID: <4E04C6D0.2020507@grupopie.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00079.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When calling the parser to recursively parse a command substitution within
|
14
|
+
an arithmetic expansion, the shell overwrote the saved shell input line and
|
15
|
+
associated state, resulting in a garbled command.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/parse.y 2011-02-26 19:19:05.000000000 -0500
|
20
|
+
--- parse.y 2011-06-24 20:08:22.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
{
|
25
|
+
sh_parser_state_t ps;
|
26
|
+
+ sh_input_line_state_t ls;
|
27
|
+
int orig_ind, nc, sflags;
|
28
|
+
char *ret, *s, *ep, *ostring;
|
29
|
+
***************
|
30
|
+
|
31
|
+
|
32
|
+
ostring = string;
|
33
|
+
|
34
|
+
+ /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
|
35
|
+
sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
|
36
|
+
if (flags & SX_NOLONGJMP)
|
37
|
+
sflags |= SEVAL_NOLONGJMP;
|
38
|
+
save_parser_state (&ps);
|
39
|
+
+ save_input_line_state (&ls);
|
40
|
+
|
41
|
+
/*(*/
|
42
|
+
***************
|
43
|
+
|
44
|
+
|
45
|
+
restore_parser_state (&ps);
|
46
|
+
reset_parser ();
|
47
|
+
+ /* reset_parser clears shell_input_line and associated variables */
|
48
|
+
+ restore_input_line_state (&ls);
|
49
|
+
if (interactive)
|
50
|
+
token_to_read = 0;
|
51
|
+
***************
|
52
|
+
|
53
|
+
|
54
|
+
ps->echo_input_at_read = echo_input_at_read;
|
55
|
+
|
56
|
+
+ ps->token = token;
|
57
|
+
+ ps->token_buffer_size = token_buffer_size;
|
58
|
+
+ /* Force reallocation on next call to read_token_word */
|
59
|
+
+ token = 0;
|
60
|
+
+ token_buffer_size = 0;
|
61
|
+
+
|
62
|
+
return (ps);
|
63
|
+
}
|
64
|
+
***************
|
65
|
+
|
66
|
+
|
67
|
+
expand_aliases = ps->expand_aliases;
|
68
|
+
echo_input_at_read = ps->echo_input_at_read;
|
69
|
+
+
|
70
|
+
+ FREE (token);
|
71
|
+
+ token = ps->token;
|
72
|
+
+ token_buffer_size = ps->token_buffer_size;
|
73
|
+
+ }
|
74
|
+
+
|
75
|
+
+ sh_input_line_state_t *
|
76
|
+
+ save_input_line_state (ls)
|
77
|
+
+ sh_input_line_state_t *ls;
|
78
|
+
+ {
|
79
|
+
+ if (ls == 0)
|
80
|
+
+ ls = (sh_input_line_state_t *)xmalloc (sizeof (sh_input_line_state_t));
|
81
|
+
+ if (ls == 0)
|
82
|
+
+ return ((sh_input_line_state_t *)NULL);
|
83
|
+
+
|
84
|
+
+ ls->input_line = shell_input_line;
|
85
|
+
+ ls->input_line_size = shell_input_line_size;
|
86
|
+
+ ls->input_line_len = shell_input_line_len;
|
87
|
+
+ ls->input_line_index = shell_input_line_index;
|
88
|
+
+
|
89
|
+
+ /* force reallocation */
|
90
|
+
+ shell_input_line = 0;
|
91
|
+
+ shell_input_line_size = shell_input_line_len = shell_input_line_index = 0;
|
92
|
+
+ }
|
93
|
+
+
|
94
|
+
+ void
|
95
|
+
+ restore_input_line_state (ls)
|
96
|
+
+ sh_input_line_state_t *ls;
|
97
|
+
+ {
|
98
|
+
+ FREE (shell_input_line);
|
99
|
+
+ shell_input_line = ls->input_line;
|
100
|
+
+ shell_input_line_size = ls->input_line_size;
|
101
|
+
+ shell_input_line_len = ls->input_line_len;
|
102
|
+
+ shell_input_line_index = ls->input_line_index;
|
103
|
+
+
|
104
|
+
+ set_line_mbstate ();
|
105
|
+
}
|
106
|
+
|
107
|
+
*** ../bash-4.2-patched/shell.h 2011-01-06 22:16:55.000000000 -0500
|
108
|
+
--- shell.h 2011-06-24 19:12:25.000000000 -0400
|
109
|
+
***************
|
110
|
+
|
111
|
+
|
112
|
+
int *token_state;
|
113
|
+
|
114
|
+
+ char *token;
|
115
|
+
+ int token_buffer_size;
|
116
|
+
+
|
117
|
+
/* input line state -- line number saved elsewhere */
|
118
|
+
int input_line_terminator;
|
119
|
+
***************
|
120
|
+
|
121
|
+
|
122
|
+
} sh_parser_state_t;
|
123
|
+
|
124
|
+
+ typedef struct _sh_input_line_state_t {
|
125
|
+
+ char *input_line;
|
126
|
+
+ int input_line_index;
|
127
|
+
+ int input_line_size;
|
128
|
+
+ int input_line_len;
|
129
|
+
+ } sh_input_line_state_t;
|
130
|
+
+
|
131
|
+
/* Let's try declaring these here. */
|
132
|
+
extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
|
133
|
+
extern void restore_parser_state __P((sh_parser_state_t *));
|
134
|
+
+
|
135
|
+
+ extern sh_input_line_state_t *save_input_line_state __P((sh_input_line_state_t *));
|
136
|
+
+ extern void restore_input_line_state __P((sh_input_line_state_t *));
|
137
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
138
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
139
|
+
***************
|
140
|
+
|
141
|
+
looks for to find the patch level (for the sccs version string). */
|
142
|
+
|
143
|
+
!
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
looks for to find the patch level (for the sccs version string). */
|
148
|
+
|
149
|
+
!
|
150
|
+
|
151
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-013
|
6
|
+
|
7
|
+
Bug-Reported-by: Marten Wikstrom <marten.wikstrom@keystream.se>
|
8
|
+
Bug-Reference-ID: <BANLkTikKECAh94ZEX68iQvxYuPeEM_xoSQ@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-05/msg00049.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
An off-by-one error caused the shell to skip over CTLNUL characters,
|
14
|
+
which are used internally to mark quoted null strings. The effect
|
15
|
+
was to have stray 0x7f characters left after expanding words like
|
16
|
+
""""""""aa.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/subst.c 2011-03-06 14:11:11.000000000 -0500
|
21
|
+
--- subst.c 2011-05-11 11:23:33.000000000 -0400
|
22
|
+
***************
|
23
|
+
|
24
|
+
}
|
25
|
+
else if (string[i] == CTLNUL)
|
26
|
+
! i++;
|
27
|
+
|
28
|
+
prev_i = i;
|
29
|
+
|
30
|
+
}
|
31
|
+
else if (string[i] == CTLNUL)
|
32
|
+
! {
|
33
|
+
! i++;
|
34
|
+
! continue;
|
35
|
+
! }
|
36
|
+
|
37
|
+
prev_i = i;
|
38
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
39
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
40
|
+
***************
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
looks for to find the patch level (for the sccs version string). */
|
49
|
+
|
50
|
+
!
|
51
|
+
|
52
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-014
|
6
|
+
|
7
|
+
Bug-Reported-by: Shawn Bohrer <sbohrer@rgmadvisors.com>
|
8
|
+
Bug-Reference-ID: <20110504152320.6E8F28130527@dev1.rgmadvisors.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-05/msg00018.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
The regular expression matching operator did not correctly match
|
14
|
+
expressions with an embedded ^A.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/pathexp.c 2010-08-13 23:21:57.000000000 -0400
|
19
|
+
--- pathexp.c 2011-05-05 16:40:58.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
|
23
|
+
continue;
|
24
|
+
! if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
|
25
|
+
continue;
|
26
|
+
temp[j++] = '\\';
|
27
|
+
|
28
|
+
if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
|
29
|
+
continue;
|
30
|
+
! if (pathname[i+1] != CTLESC && (qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
|
31
|
+
continue;
|
32
|
+
temp[j++] = '\\';
|
33
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
34
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
35
|
+
***************
|
36
|
+
|
37
|
+
looks for to find the patch level (for the sccs version string). */
|
38
|
+
|
39
|
+
!
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-015
|
6
|
+
|
7
|
+
Bug-Reported-by: <dnade.ext@orange-ftgroup.com>
|
8
|
+
Bug-Reference-ID: <728_1312188080_4E3666B0_728_118711_1_3B5D3E0F95CC5C478D6500CDCE8B691F7AAAA4AA3D@PUEXCB2B.nanterre.francetelecom.fr>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00000.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When in a context where arithmetic evaluation is not taking place, the
|
14
|
+
evaluator should not check for division by 0.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/expr.c 2010-12-21 11:12:13.000000000 -0500
|
19
|
+
--- expr.c 2011-08-02 20:58:28.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
if (special)
|
24
|
+
{
|
25
|
+
+ if ((op == DIV || op == MOD) && value == 0)
|
26
|
+
+ {
|
27
|
+
+ if (noeval == 0)
|
28
|
+
+ evalerror (_("division by 0"));
|
29
|
+
+ else
|
30
|
+
+ value = 1;
|
31
|
+
+ }
|
32
|
+
+
|
33
|
+
switch (op)
|
34
|
+
{
|
35
|
+
***************
|
36
|
+
|
37
|
+
break;
|
38
|
+
case DIV:
|
39
|
+
- if (value == 0)
|
40
|
+
- evalerror (_("division by 0"));
|
41
|
+
lvalue /= value;
|
42
|
+
break;
|
43
|
+
case MOD:
|
44
|
+
- if (value == 0)
|
45
|
+
- evalerror (_("division by 0"));
|
46
|
+
lvalue %= value;
|
47
|
+
break;
|
48
|
+
|
49
|
+
***************
|
50
|
+
|
51
|
+
|
52
|
+
if (((op == DIV) || (op == MOD)) && (val2 == 0))
|
53
|
+
! evalerror (_("division by 0"));
|
54
|
+
|
55
|
+
if (op == MUL)
|
56
|
+
|
57
|
+
|
58
|
+
if (((op == DIV) || (op == MOD)) && (val2 == 0))
|
59
|
+
! {
|
60
|
+
! if (noeval == 0)
|
61
|
+
! evalerror (_("division by 0"));
|
62
|
+
! else
|
63
|
+
! val2 = 1;
|
64
|
+
! }
|
65
|
+
|
66
|
+
if (op == MUL)
|
67
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
68
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
69
|
+
***************
|
70
|
+
|
71
|
+
looks for to find the patch level (for the sccs version string). */
|
72
|
+
|
73
|
+
!
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
looks for to find the patch level (for the sccs version string). */
|
78
|
+
|
79
|
+
!
|
80
|
+
|
81
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-016
|
6
|
+
|
7
|
+
Bug-Reported-by: Martin von Gagern <Martin.vGagern@gmx.net>
|
8
|
+
Bug-Reference-ID: <4E43AD9E.8060501@gmx.net>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00141.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash should not check for mail while executing the `eval' builtin.
|
14
|
+
|
15
|
+
Patch (apply with `patch -p0'):
|
16
|
+
|
17
|
+
*** ../bash-4.2-patched/parse.y Fri Feb 25 12:07:41 2011
|
18
|
+
--- parse.y Thu Aug 11 19:02:26 2011
|
19
|
+
***************
|
20
|
+
|
21
|
+
is the mail alarm reset; nothing takes place in check_mail ()
|
22
|
+
except the checking of mail. Please don't change this. */
|
23
|
+
! if (prompt_is_ps1 && time_to_check_mail ())
|
24
|
+
{
|
25
|
+
check_mail ();
|
26
|
+
|
27
|
+
is the mail alarm reset; nothing takes place in check_mail ()
|
28
|
+
except the checking of mail. Please don't change this. */
|
29
|
+
! if (prompt_is_ps1 && parse_and_execute_level == 0 && time_to_check_mail ())
|
30
|
+
{
|
31
|
+
check_mail ();
|
32
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
33
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
34
|
+
***************
|
35
|
+
|
36
|
+
looks for to find the patch level (for the sccs version string). */
|
37
|
+
|
38
|
+
!
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-017
|
6
|
+
|
7
|
+
Bug-Reported-by: Curtis Doty <Curtis@GreenKey.net>
|
8
|
+
Bug-Reference-ID: <20110621035324.A4F70849F59@mx1.iParadigms.net>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00053.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Using `read -a foo' where foo was an already-declared associative array
|
14
|
+
caused the shell to die with a segmentation fault.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/builtins/read.def 2011-01-04 11:43:36.000000000 -0500
|
19
|
+
--- builtins/read.def 2011-06-21 10:31:02.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
return EXECUTION_FAILURE; /* readonly or noassign */
|
24
|
+
}
|
25
|
+
+ if (assoc_p (var))
|
26
|
+
+ {
|
27
|
+
+ builtin_error (_("%s: cannot convert associative to indexed array"), arrayname);
|
28
|
+
+ xfree (input_string);
|
29
|
+
+ return EXECUTION_FAILURE; /* existing associative array */
|
30
|
+
+ }
|
31
|
+
array_flush (array_cell (var));
|
32
|
+
|
33
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
34
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
35
|
+
***************
|
36
|
+
|
37
|
+
looks for to find the patch level (for the sccs version string). */
|
38
|
+
|
39
|
+
!
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-018
|
6
|
+
|
7
|
+
Bug-Reported-by: Thomas Cort <tcort@minix3.org>
|
8
|
+
Bug-Reference-ID: <BANLkTik-ebGGw3k_1YtB=RyfV1bsqdxC_g
.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00110.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash fails to compile unless JOB_CONTROL is defined.
|
14
|
+
|
15
|
+
Patch (apply with `patch -p0'):
|
16
|
+
|
17
|
+
*** ../bash-4.2-patched/execute_cmd.c 2011-02-09 17:32:25.000000000 -0500
|
18
|
+
--- execute_cmd.c 2011-11-06 15:12:48.000000000 -0500
|
19
|
+
***************
|
20
|
+
|
21
|
+
|
22
|
+
cmd->flags |= CMD_IGNORE_RETURN;
|
23
|
+
|
24
|
+
+
|
25
|
+
lastpipe_flag = 0;
|
26
|
+
begin_unwind_frame ("lastpipe-exec");
|
27
|
+
***************
|
28
|
+
|
29
|
+
add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
|
30
|
+
}
|
31
|
+
! cmd->flags |= CMD_LASTPIPE;
|
32
|
+
}
|
33
|
+
if (prev >= 0)
|
34
|
+
add_unwind_protect (close, prev);
|
35
|
+
|
36
|
+
exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
|
37
|
+
|
38
|
+
if (lstdin > 0)
|
39
|
+
restore_stdin (lstdin);
|
40
|
+
|
41
|
+
if (prev >= 0)
|
42
|
+
|
43
|
+
add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
|
44
|
+
}
|
45
|
+
! if (cmd)
|
46
|
+
! cmd->flags |= CMD_LASTPIPE;
|
47
|
+
}
|
48
|
+
if (prev >= 0)
|
49
|
+
add_unwind_protect (close, prev);
|
50
|
+
+
|
51
|
+
|
52
|
+
exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
|
53
|
+
|
54
|
+
+
|
55
|
+
if (lstdin > 0)
|
56
|
+
restore_stdin (lstdin);
|
57
|
+
+
|
58
|
+
|
59
|
+
if (prev >= 0)
|
60
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
61
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
62
|
+
***************
|
63
|
+
|
64
|
+
looks for to find the patch level (for the sccs version string). */
|
65
|
+
|
66
|
+
!
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
looks for to find the patch level (for the sccs version string). */
|
71
|
+
|
72
|
+
!
|
73
|
+
|
74
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-019
|
6
|
+
|
7
|
+
Bug-Reported-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
|
8
|
+
Bug-Reference-ID: <CAGOxLdHcSQu3ck9Qy3pRjj_NBU5tAPSAvNm-95-nLQ9Szwb6aA@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: lists.gnu.org/archive/html/bug-bash/2011-09/msg00047.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Using `declare' with attributes and an invalid array variable name or
|
14
|
+
assignment reference resulted in a segmentation fault instead of a
|
15
|
+
declaration error.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/builtins/declare.def 2010-05-30 18:25:21.000000000 -0400
|
20
|
+
--- builtins/declare.def 2011-09-15 15:20:20.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
var = assign_array_element (name, value, 0); /* XXX - not aflags */
|
25
|
+
*subscript_start = '\0';
|
26
|
+
+ if (var == 0) /* some kind of assignment error */
|
27
|
+
+ {
|
28
|
+
+ assign_error++;
|
29
|
+
+ NEXT_VARIABLE ();
|
30
|
+
+ }
|
31
|
+
}
|
32
|
+
else if (simple_array_assign)
|
33
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
34
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
35
|
+
***************
|
36
|
+
|
37
|
+
looks for to find the patch level (for the sccs version string). */
|
38
|
+
|
39
|
+
!
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-020
|
6
|
+
|
7
|
+
Bug-Reported-by: Vincent Sheffer <vince.sheffer@apisphere.com>
|
8
|
+
Bug-Reference-ID: <F13C1C4F-C44C-4071-BFED-4BB6D13CF92F@apisphere.com>
|
9
|
+
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
The shared object helper script needs to be updated for Mac OS X 10.7
|
14
|
+
(Lion, darwin11).
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/support/shobj-conf 2009-10-28 09:20:21.000000000 -0400
|
19
|
+
--- support/shobj-conf 2011-08-27 13:25:23.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
Darwin/MacOS X
|
24
|
+
! darwin[89]*|darwin10*)
|
25
|
+
SHOBJ_STATUS=supported
|
26
|
+
SHLIB_STATUS=supported
|
27
|
+
|
28
|
+
|
29
|
+
Darwin/MacOS X
|
30
|
+
! darwin[89]*|darwin1[012]*)
|
31
|
+
SHOBJ_STATUS=supported
|
32
|
+
SHLIB_STATUS=supported
|
33
|
+
***************
|
34
|
+
|
35
|
+
|
36
|
+
case "${host_os}" in
|
37
|
+
! darwin[789]*|darwin10*) SHOBJ_LDFLAGS=''
|
38
|
+
SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
|
39
|
+
;;
|
40
|
+
|
41
|
+
|
42
|
+
case "${host_os}" in
|
43
|
+
! darwin[789]*|darwin1[012]*) SHOBJ_LDFLAGS=''
|
44
|
+
SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
|
45
|
+
;;
|
46
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
47
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
48
|
+
***************
|
49
|
+
|
50
|
+
looks for to find the patch level (for the sccs version string). */
|
51
|
+
|
52
|
+
!
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
looks for to find the patch level (for the sccs version string). */
|
57
|
+
|
58
|
+
!
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-021
|
6
|
+
|
7
|
+
Bug-Reported-by: Dan Douglas <ormaaj@gmail.com>
|
8
|
+
Bug-Reference-ID: <4585554.nZWb4q7YoZ@smorgbox>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-12/msg00084.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Using `read -N' to assign values to an array can result in NUL values being
|
14
|
+
assigned to some array elements. These values cause seg faults when referenced
|
15
|
+
later.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/builtins/read.def 2011-11-21 18:03:38.000000000 -0500
|
20
|
+
--- builtins/read.def 2011-12-19 19:52:12.000000000 -0500
|
21
|
+
***************
|
22
|
+
|
23
|
+
}
|
24
|
+
else
|
25
|
+
! var = bind_read_variable (varname, t);
|
26
|
+
}
|
27
|
+
else
|
28
|
+
|
29
|
+
}
|
30
|
+
else
|
31
|
+
! var = bind_read_variable (varname, t ? t : "");
|
32
|
+
}
|
33
|
+
else
|
34
|
+
***************
|
35
|
+
|
36
|
+
}
|
37
|
+
else
|
38
|
+
! var = bind_read_variable (list->word->word, input_string);
|
39
|
+
|
40
|
+
if (var)
|
41
|
+
|
42
|
+
}
|
43
|
+
else
|
44
|
+
! var = bind_read_variable (list->word->word, input_string ? input_string : "");
|
45
|
+
|
46
|
+
if (var)
|
47
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
48
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
49
|
+
***************
|
50
|
+
|
51
|
+
looks for to find the patch level (for the sccs version string). */
|
52
|
+
|
53
|
+
!
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
looks for to find the patch level (for the sccs version string). */
|
58
|
+
|
59
|
+
!
|
60
|
+
|
61
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-022
|
6
|
+
|
7
|
+
Bug-Reported-by: Gregory Margo <gmargo@pacbell.net>
|
8
|
+
Bug-Reference-ID: <20110727174529.GA3333@pacbell.net>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-07/msg00102.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
The return value from lseek is `off_t'. This can cause corrupted return
|
14
|
+
values when the file offset is greater than 2**31 - 1.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/lib/sh/zread.c Mon Mar 2 08:54:45 2009
|
19
|
+
--- lib/sh/zread.c Thu Jul 28 18:16:53 2011
|
20
|
+
***************
|
21
|
+
|
22
|
+
int fd;
|
23
|
+
{
|
24
|
+
! off_t off;
|
25
|
+
! int r;
|
26
|
+
|
27
|
+
off = lused - lind;
|
28
|
+
|
29
|
+
int fd;
|
30
|
+
{
|
31
|
+
! off_t off, r;
|
32
|
+
|
33
|
+
off = lused - lind;
|
34
|
+
***************
|
35
|
+
|
36
|
+
r = lseek (fd, -off, SEEK_CUR);
|
37
|
+
|
38
|
+
! if (r >= 0)
|
39
|
+
lused = lind = 0;
|
40
|
+
}
|
41
|
+
|
42
|
+
r = lseek (fd, -off, SEEK_CUR);
|
43
|
+
|
44
|
+
! if (r != -1)
|
45
|
+
lused = lind = 0;
|
46
|
+
}
|
47
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
48
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
49
|
+
***************
|
50
|
+
|
51
|
+
looks for to find the patch level (for the sccs version string). */
|
52
|
+
|
53
|
+
!
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
looks for to find the patch level (for the sccs version string). */
|
58
|
+
|
59
|
+
!
|
60
|
+
|
61
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-023
|
6
|
+
|
7
|
+
Bug-Reported-by: Ewan Mellor <Ewan.Mellor@eu.citrix.com>
|
8
|
+
Bug-Reference-ID: <6005BE083BF501439A84DC3523BAC82DC4B964FD12@LONPMAILBOX01.citrite.net>
|
9
|
+
Bug-Reference-URL:
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Under some circumstances, an exit trap triggered by a bad substitution
|
14
|
+
error when errexit is enabled will cause the shell to exit with an
|
15
|
+
incorrect exit status (0).
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/subst.c 2011-11-21 12:04:38.000000000 -0500
|
20
|
+
--- subst.c 2012-02-08 13:36:28.000000000 -0500
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
case '\0':
|
25
|
+
bad_substitution:
|
26
|
+
+ last_command_exit_value = EXECUTION_FAILURE;
|
27
|
+
report_error (_("%s: bad substitution"), string ? string : "??");
|
28
|
+
FREE (value);
|
29
|
+
*** ../bash-4.2-patched/error.c 2009-08-21 22:31:31.000000000 -0400
|
30
|
+
--- error.c 2012-02-25 15:54:40.000000000 -0500
|
31
|
+
***************
|
32
|
+
|
33
|
+
va_end (args);
|
34
|
+
if (exit_immediately_on_error)
|
35
|
+
! exit_shell (1);
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
va_end (args);
|
40
|
+
if (exit_immediately_on_error)
|
41
|
+
! {
|
42
|
+
! if (last_command_exit_value == 0)
|
43
|
+
! last_command_exit_value = 1;
|
44
|
+
! exit_shell (last_command_exit_value);
|
45
|
+
! }
|
46
|
+
}
|
47
|
+
|
48
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
49
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
50
|
+
***************
|
51
|
+
|
52
|
+
looks for to find the patch level (for the sccs version string). */
|
53
|
+
|
54
|
+
!
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
looks for to find the patch level (for the sccs version string). */
|
59
|
+
|
60
|
+
!
|
61
|
+
|
62
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-024
|
6
|
+
|
7
|
+
Bug-Reported-by: Jim Avera <james_avera@yahoo.com>
|
8
|
+
Bug-Reference-ID: <4F29E07A.80405@yahoo.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-02/msg00001.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When `printf -v' is used to set an array element, the format string contains
|
14
|
+
`%b', and the corresponding argument is the empty string, the buffer used
|
15
|
+
to store the value to be assigned can be NULL, which results in NUL being
|
16
|
+
assigned to the array element. This causes a seg fault when it's used later.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/builtins/printf.def 2011-02-25 12:07:41.000000000 -0500
|
21
|
+
--- builtins/printf.def 2012-02-02 08:37:12.000000000 -0500
|
22
|
+
***************
|
23
|
+
|
24
|
+
|
25
|
+
{
|
26
|
+
vflag = 1;
|
27
|
+
+ if (vbsize == 0)
|
28
|
+
+ vbuf = xmalloc (vbsize = 16);
|
29
|
+
vblen = 0;
|
30
|
+
if (vbuf)
|
31
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
32
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
33
|
+
***************
|
34
|
+
|
35
|
+
looks for to find the patch level (for the sccs version string). */
|
36
|
+
|
37
|
+
!
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
looks for to find the patch level (for the sccs version string). */
|
42
|
+
|
43
|
+
!
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,143 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-025
|
6
|
+
|
7
|
+
Bug-Reported-by: Bill Gradwohl <bill@ycc.com>
|
8
|
+
Bug-Reference-ID: <CAFyvKis-UfuOWr5THBRKh=vYHDoKEEgdW8hN1RviTuYQ00Lu5A
.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2012-03/msg00078.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When used in a shell function, `declare -g -a array=(compound assignment)'
|
14
|
+
creates a local variable instead of a global one.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/command.h 2010-08-02 19:36:51.000000000 -0400
|
19
|
+
--- command.h 2012-04-01 12:38:35.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
+
|
26
|
+
|
27
|
+
/* Possible values for subshell_environment */
|
28
|
+
*** ../bash-4.2-patched/execute_cmd.c 2011-11-21 18:03:41.000000000 -0500
|
29
|
+
--- execute_cmd.c 2012-04-01 12:42:03.000000000 -0400
|
30
|
+
***************
|
31
|
+
|
32
|
+
WORD_LIST *w;
|
33
|
+
struct builtin *b;
|
34
|
+
! int assoc;
|
35
|
+
|
36
|
+
if (words == 0)
|
37
|
+
|
38
|
+
WORD_LIST *w;
|
39
|
+
struct builtin *b;
|
40
|
+
! int assoc, global;
|
41
|
+
|
42
|
+
if (words == 0)
|
43
|
+
***************
|
44
|
+
|
45
|
+
|
46
|
+
b = 0;
|
47
|
+
! assoc = 0;
|
48
|
+
|
49
|
+
for (w = words; w; w = w->next)
|
50
|
+
|
51
|
+
|
52
|
+
b = 0;
|
53
|
+
! assoc = global = 0;
|
54
|
+
|
55
|
+
for (w = words; w; w = w->next)
|
56
|
+
***************
|
57
|
+
|
58
|
+
|
59
|
+
if (assoc)
|
60
|
+
w->word->flags |= W_ASSIGNASSOC;
|
61
|
+
+ if (global)
|
62
|
+
+ w->word->flags |= W_ASSNGLOBAL;
|
63
|
+
endif
|
64
|
+
}
|
65
|
+
***************
|
66
|
+
|
67
|
+
/* Note that we saw an associative array option to a builtin that takes
|
68
|
+
assignment statements. This is a bit of a kludge. */
|
69
|
+
! else if (w->word->word[0] == '-' && strchr (w->word->word, 'A'))
|
70
|
+
{
|
71
|
+
if (b == 0)
|
72
|
+
|
73
|
+
/* Note that we saw an associative array option to a builtin that takes
|
74
|
+
assignment statements. This is a bit of a kludge. */
|
75
|
+
! else if (w->word->word[0] == '-' && (strchr (w->word->word+1, 'A') || strchr (w->word->word+1, 'g')))
|
76
|
+
!
|
77
|
+
! else if (w->word->word[0] == '-' && strchr (w->word->word+1, 'g'))
|
78
|
+
!
|
79
|
+
{
|
80
|
+
if (b == 0)
|
81
|
+
***************
|
82
|
+
|
83
|
+
words->word->flags |= W_ASSNBLTIN;
|
84
|
+
}
|
85
|
+
! if (words->word->flags & W_ASSNBLTIN)
|
86
|
+
assoc = 1;
|
87
|
+
}
|
88
|
+
-
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
words->word->flags |= W_ASSNBLTIN;
|
93
|
+
}
|
94
|
+
! if ((words->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'A'))
|
95
|
+
assoc = 1;
|
96
|
+
+ if ((words->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'g'))
|
97
|
+
+ global = 1;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
*** ../bash-4.2-patched/subst.c 2012-03-11 17:35:13.000000000 -0400
|
102
|
+
--- subst.c 2012-04-01 12:38:35.000000000 -0400
|
103
|
+
***************
|
104
|
+
|
105
|
+
|
106
|
+
fprintf (stderr, "W_ASSNBLTIN%s", f ? "|" : "");
|
107
|
+
}
|
108
|
+
+ if (f & W_ASSNGLOBAL)
|
109
|
+
+ {
|
110
|
+
+ f &= ~W_ASSNGLOBAL;
|
111
|
+
+ fprintf (stderr, "W_ASSNGLOBAL%s", f ? "|" : "");
|
112
|
+
+ }
|
113
|
+
if (f & W_COMPASSIGN)
|
114
|
+
{
|
115
|
+
***************
|
116
|
+
|
117
|
+
else if (assign_list)
|
118
|
+
{
|
119
|
+
! if (word->flags & W_ASSIGNARG)
|
120
|
+
aflags |= ASS_MKLOCAL;
|
121
|
+
if (word->flags & W_ASSIGNASSOC)
|
122
|
+
|
123
|
+
else if (assign_list)
|
124
|
+
{
|
125
|
+
! if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0)
|
126
|
+
aflags |= ASS_MKLOCAL;
|
127
|
+
if (word->flags & W_ASSIGNASSOC)
|
128
|
+
|
129
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
130
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
131
|
+
***************
|
132
|
+
|
133
|
+
looks for to find the patch level (for the sccs version string). */
|
134
|
+
|
135
|
+
!
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
looks for to find the patch level (for the sccs version string). */
|
140
|
+
|
141
|
+
!
|
142
|
+
|
143
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-026
|
6
|
+
|
7
|
+
Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org>
|
8
|
+
Bug-Reference-ID: <20120425180443.GO22241@eeg.ccf.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00172.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
The `lastpipe' option does not behave correctly on machines where the
|
14
|
+
open file limit is less than 256.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/execute_cmd.c 2011-11-21 12:04:47.000000000 -0500
|
19
|
+
--- execute_cmd.c 2012-04-26 11:09:30.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
|
23
|
+
{
|
24
|
+
! lstdin = move_to_high_fd (0, 0, 255);
|
25
|
+
if (lstdin > 0)
|
26
|
+
{
|
27
|
+
|
28
|
+
if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
|
29
|
+
{
|
30
|
+
! lstdin = move_to_high_fd (0, 1, -1);
|
31
|
+
if (lstdin > 0)
|
32
|
+
{
|
33
|
+
***************
|
34
|
+
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
+
|
39
|
+
discard_unwind_frame ("lastpipe-exec");
|
40
|
+
+
|
41
|
+
|
42
|
+
return (exec_result);
|
43
|
+
|
44
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
45
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
46
|
+
***************
|
47
|
+
|
48
|
+
looks for to find the patch level (for the sccs version string). */
|
49
|
+
|
50
|
+
!
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
looks for to find the patch level (for the sccs version string). */
|
55
|
+
|
56
|
+
!
|
57
|
+
|
58
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-027
|
6
|
+
|
7
|
+
Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
|
8
|
+
Bug-Reference-ID: <201204211243.30163.vapier@gentoo.org>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00134.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When the `extglob' shell option is enabled, pattern substitution does not
|
14
|
+
work correctly in the presence of multibyte characters.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/subst.c 2012-03-11 17:52:57.000000000 -0400
|
19
|
+
--- subst.c 2012-04-22 16:19:10.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
if defined (EXTENDED_GLOB)
|
23
|
+
if (extended_glob)
|
24
|
+
! simple |= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
|
25
|
+
endif
|
26
|
+
|
27
|
+
|
28
|
+
if defined (EXTENDED_GLOB)
|
29
|
+
if (extended_glob)
|
30
|
+
! simple &= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
|
31
|
+
endif
|
32
|
+
|
33
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
34
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
35
|
+
***************
|
36
|
+
|
37
|
+
looks for to find the patch level (for the sccs version string). */
|
38
|
+
|
39
|
+
!
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-028
|
6
|
+
|
7
|
+
Bug-Reported-by: Mark Edgar <medgar123@gmail.com>
|
8
|
+
Bug-Reference-ID: <CABHMh_3d+ZgO_zaEtYXPwK4P7tC0ghZ4g=Ue_TRpsEMf5YDsqw
.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00109.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When using a word expansion for which the right hand side is evaluated,
|
14
|
+
certain expansions of quoted null strings include spurious ^? characters.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/subst.c 2012-03-11 17:35:13.000000000 -0400
|
19
|
+
--- subst.c 2012-03-20 19:30:13.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
if (qdollaratp && ((hasdol && quoted) || l->next))
|
24
|
+
*qdollaratp = 1;
|
25
|
+
+ /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is
|
26
|
+
+ a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the
|
27
|
+
+ flags indicate it (l->word->flags & W_HASQUOTEDNULL), and the
|
28
|
+
+ expansion is quoted (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
|
29
|
+
+ (which is more paranoia than anything else), we need to return the
|
30
|
+
+ quoted null string and set the flags to indicate it. */
|
31
|
+
+ if (l->next == 0 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL(temp) && QUOTED_NULL(l->word->word) && (l->word->flags & W_HASQUOTEDNULL))
|
32
|
+
+ {
|
33
|
+
+ w->flags |= W_HASQUOTEDNULL;
|
34
|
+
+ }
|
35
|
+
dispose_words (l);
|
36
|
+
}
|
37
|
+
|
38
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
39
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
40
|
+
***************
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
looks for to find the patch level (for the sccs version string). */
|
49
|
+
|
50
|
+
!
|
51
|
+
|
52
|
+
|
@@ -0,0 +1,524 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-029
|
6
|
+
|
7
|
+
Bug-Reported-by: "Michael Kalisz" <michael@kalisz.homelinux.net>
|
8
|
+
Bug-Reference-ID: <50241.78.69.11.112.1298585641.squirrel@kalisz.homelinux.net>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash-4.2 tries to leave completed directory names as the user typed them,
|
14
|
+
without expanding them to a full pathname. One effect of this is that
|
15
|
+
shell variables used in pathnames being completed (e.g., $HOME) are left
|
16
|
+
unchanged, but the `$' is quoted by readline because it is a special
|
17
|
+
character to the shell.
|
18
|
+
|
19
|
+
This patch introduces two things:
|
20
|
+
|
21
|
+
1. A new shell option, `direxpand', which, if set, attempts to emulate the
|
22
|
+
bash-4.1 behavior of expanding words to full pathnames during
|
23
|
+
completion;
|
24
|
+
2. A set of heuristics that reduce the number of times special characters
|
25
|
+
such as `$' are quoted when the directory name is not expanded.
|
26
|
+
|
27
|
+
Patch (apply with `patch -p0'):
|
28
|
+
|
29
|
+
diff -NrC 2 ../bash-4.2-patched/bashline.c ./bashline.c
|
30
|
+
*** ../bash-4.2-patched/bashline.c 2011-01-16 15:32:47.000000000 -0500
|
31
|
+
--- ./bashline.c 2012-05-07 16:27:18.000000000 -0400
|
32
|
+
***************
|
33
|
+
|
34
|
+
|
35
|
+
static int bash_push_line __P((void));
|
36
|
+
|
37
|
+
+ static rl_icppfunc_t *save_directory_hook __P((void));
|
38
|
+
+ static void reset_directory_hook __P((rl_icppfunc_t *));
|
39
|
+
+
|
40
|
+
static void cleanup_expansion_error __P((void));
|
41
|
+
static void maybe_make_readline_line __P((char *));
|
42
|
+
***************
|
43
|
+
|
44
|
+
|
45
|
+
int dircomplete_spelling = 0;
|
46
|
+
|
47
|
+
+ /* Expand directory names during word/filename completion. */
|
48
|
+
+ int dircomplete_expand = 0;
|
49
|
+
+ int dircomplete_expand_relpath = 0;
|
50
|
+
+
|
51
|
+
static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
|
52
|
+
static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
|
53
|
+
/* )) */
|
54
|
+
|
55
|
+
+ static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/
|
56
|
+
+ static char *custom_filename_quote_characters = 0;
|
57
|
+
+
|
58
|
+
static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
|
59
|
+
|
60
|
+
***************
|
61
|
+
|
62
|
+
/* Tell the completer that we might want to follow symbolic links or
|
63
|
+
do other expansion on directory names. */
|
64
|
+
! rl_directory_rewrite_hook = bash_directory_completion_hook;
|
65
|
+
|
66
|
+
rl_filename_rewrite_hook = bash_filename_rewrite_hook;
|
67
|
+
|
68
|
+
/* Tell the completer that we might want to follow symbolic links or
|
69
|
+
do other expansion on directory names. */
|
70
|
+
! set_directory_hook ();
|
71
|
+
|
72
|
+
rl_filename_rewrite_hook = bash_filename_rewrite_hook;
|
73
|
+
***************
|
74
|
+
|
75
|
+
|
76
|
+
/* characters that need to be quoted when appearing in filenames. */
|
77
|
+
! rl_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/
|
78
|
+
|
79
|
+
rl_filename_quoting_function = bash_quote_filename;
|
80
|
+
|
81
|
+
|
82
|
+
/* characters that need to be quoted when appearing in filenames. */
|
83
|
+
! rl_filename_quote_characters = default_filename_quote_characters;
|
84
|
+
|
85
|
+
rl_filename_quoting_function = bash_quote_filename;
|
86
|
+
***************
|
87
|
+
|
88
|
+
rl_attempted_completion_function = attempt_shell_completion;
|
89
|
+
rl_completion_entry_function = NULL;
|
90
|
+
- rl_directory_rewrite_hook = bash_directory_completion_hook;
|
91
|
+
rl_ignore_some_completions_function = filename_completion_ignore;
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
rl_attempted_completion_function = attempt_shell_completion;
|
96
|
+
rl_completion_entry_function = NULL;
|
97
|
+
rl_ignore_some_completions_function = filename_completion_ignore;
|
98
|
+
+ rl_filename_quote_characters = default_filename_quote_characters;
|
99
|
+
+
|
100
|
+
+ set_directory_hook ();
|
101
|
+
}
|
102
|
+
|
103
|
+
***************
|
104
|
+
|
105
|
+
|
106
|
+
rl_ignore_some_completions_function = filename_completion_ignore;
|
107
|
+
|
108
|
+
+ rl_filename_quote_characters = default_filename_quote_characters;
|
109
|
+
+ set_directory_hook ();
|
110
|
+
+
|
111
|
+
/* Determine if this could be a command word. It is if it appears at
|
112
|
+
the start of the line (ignoring preceding whitespace), or if it
|
113
|
+
***************
|
114
|
+
|
115
|
+
|
116
|
+
else
|
117
|
+
{
|
118
|
+
+ if (dircomplete_expand && dot_or_dotdot (filename_hint))
|
119
|
+
+ {
|
120
|
+
+ dircomplete_expand = 0;
|
121
|
+
+ set_directory_hook ();
|
122
|
+
+ dircomplete_expand = 1;
|
123
|
+
+ }
|
124
|
+
mapping_over = 4;
|
125
|
+
goto inner;
|
126
|
+
***************
|
127
|
+
|
128
|
+
|
129
|
+
inner:
|
130
|
+
val = rl_filename_completion_function (filename_hint, istate);
|
131
|
+
+ if (mapping_over == 4 && dircomplete_expand)
|
132
|
+
+ set_directory_hook ();
|
133
|
+
+
|
134
|
+
istate = 1;
|
135
|
+
|
136
|
+
***************
|
137
|
+
|
138
|
+
|
139
|
+
}
|
140
|
+
|
141
|
+
+ /* Functions to save and restore the appropriate directory hook */
|
142
|
+
+ /* This is not static so the shopt code can call it */
|
143
|
+
+ void
|
144
|
+
+ set_directory_hook ()
|
145
|
+
+ {
|
146
|
+
+ if (dircomplete_expand)
|
147
|
+
+ {
|
148
|
+
+ rl_directory_completion_hook = bash_directory_completion_hook;
|
149
|
+
+ rl_directory_rewrite_hook = (rl_icppfunc_t *)0;
|
150
|
+
+ }
|
151
|
+
+ else
|
152
|
+
+ {
|
153
|
+
+ rl_directory_rewrite_hook = bash_directory_completion_hook;
|
154
|
+
+ rl_directory_completion_hook = (rl_icppfunc_t *)0;
|
155
|
+
+ }
|
156
|
+
+ }
|
157
|
+
+
|
158
|
+
+ static rl_icppfunc_t *
|
159
|
+
+ save_directory_hook ()
|
160
|
+
+ {
|
161
|
+
+ rl_icppfunc_t *ret;
|
162
|
+
+
|
163
|
+
+ if (dircomplete_expand)
|
164
|
+
+ {
|
165
|
+
+ ret = rl_directory_completion_hook;
|
166
|
+
+ rl_directory_completion_hook = (rl_icppfunc_t *)NULL;
|
167
|
+
+ }
|
168
|
+
+ else
|
169
|
+
+ {
|
170
|
+
+ ret = rl_directory_rewrite_hook;
|
171
|
+
+ rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
|
172
|
+
+ }
|
173
|
+
+
|
174
|
+
+ return ret;
|
175
|
+
+ }
|
176
|
+
+
|
177
|
+
+ static void
|
178
|
+
+ restore_directory_hook (hookf)
|
179
|
+
+ rl_icppfunc_t *hookf;
|
180
|
+
+ {
|
181
|
+
+ if (dircomplete_expand)
|
182
|
+
+ rl_directory_completion_hook = hookf;
|
183
|
+
+ else
|
184
|
+
+ rl_directory_rewrite_hook = hookf;
|
185
|
+
+ }
|
186
|
+
+
|
187
|
+
/* Handle symbolic link references and other directory name
|
188
|
+
expansions while hacking completion. This should return 1 if it modifies
|
189
|
+
***************
|
190
|
+
|
191
|
+
{
|
192
|
+
char *local_dirname, *new_dirname, *t;
|
193
|
+
! int return_value, should_expand_dirname;
|
194
|
+
WORD_LIST *wl;
|
195
|
+
struct stat sb;
|
196
|
+
|
197
|
+
! return_value = should_expand_dirname = 0;
|
198
|
+
local_dirname = *dirname;
|
199
|
+
|
200
|
+
! if (mbschr (local_dirname, '$'))
|
201
|
+
! should_expand_dirname = 1;
|
202
|
+
else
|
203
|
+
{
|
204
|
+
t = mbschr (local_dirname, '`');
|
205
|
+
if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
|
206
|
+
! should_expand_dirname = 1;
|
207
|
+
}
|
208
|
+
|
209
|
+
|
210
|
+
{
|
211
|
+
char *local_dirname, *new_dirname, *t;
|
212
|
+
! int return_value, should_expand_dirname, nextch, closer;
|
213
|
+
WORD_LIST *wl;
|
214
|
+
struct stat sb;
|
215
|
+
|
216
|
+
! return_value = should_expand_dirname = nextch = closer = 0;
|
217
|
+
local_dirname = *dirname;
|
218
|
+
|
219
|
+
! if (t = mbschr (local_dirname, '$'))
|
220
|
+
! {
|
221
|
+
! should_expand_dirname = '$';
|
222
|
+
! nextch = t[1];
|
223
|
+
! /* Deliberately does not handle the deprecated $[...] arithmetic
|
224
|
+
! expansion syntax */
|
225
|
+
! if (nextch == '(')
|
226
|
+
! closer = ')';
|
227
|
+
! else if (nextch == '{')
|
228
|
+
! closer = '}';
|
229
|
+
! else
|
230
|
+
! nextch = 0;
|
231
|
+
! }
|
232
|
+
else
|
233
|
+
{
|
234
|
+
t = mbschr (local_dirname, '`');
|
235
|
+
if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
|
236
|
+
! should_expand_dirname = '`';
|
237
|
+
}
|
238
|
+
|
239
|
+
***************
|
240
|
+
|
241
|
+
|
242
|
+
dispose_words (wl);
|
243
|
+
local_dirname = *dirname;
|
244
|
+
+ /* XXX - change rl_filename_quote_characters here based on
|
245
|
+
+ should_expand_dirname/nextch/closer. This is the only place
|
246
|
+
+ custom_filename_quote_characters is modified. */
|
247
|
+
+ if (rl_filename_quote_characters && *rl_filename_quote_characters)
|
248
|
+
+ {
|
249
|
+
+ int i, j, c;
|
250
|
+
+ i = strlen (default_filename_quote_characters);
|
251
|
+
+ custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1);
|
252
|
+
+ for (i = j = 0; c = default_filename_quote_characters[i]; i++)
|
253
|
+
+ {
|
254
|
+
+ if (c == should_expand_dirname || c == nextch || c == closer)
|
255
|
+
+ continue;
|
256
|
+
+ custom_filename_quote_characters[j++] = c;
|
257
|
+
+ }
|
258
|
+
+ custom_filename_quote_characters[j] = '\0';
|
259
|
+
+ rl_filename_quote_characters = custom_filename_quote_characters;
|
260
|
+
+ }
|
261
|
+
}
|
262
|
+
else
|
263
|
+
***************
|
264
|
+
|
265
|
+
|
266
|
+
}
|
267
|
+
|
268
|
+
+ /* no_symbolic_links == 0 -> use (default) logical view of the file system.
|
269
|
+
+ local_dirname[0] == '.' && local_dirname[1] == '/' means files in the
|
270
|
+
+ current directory (./).
|
271
|
+
+ local_dirname[0] == '.' && local_dirname[1] == 0 means relative pathnames
|
272
|
+
+ in the current directory (e.g., lib/sh).
|
273
|
+
+ XXX - should we do spelling correction on these? */
|
274
|
+
+
|
275
|
+
+ /* This is test as it was in bash-4.2: skip relative pathnames in current
|
276
|
+
+ directory. Change test to
|
277
|
+
+ (local_dirname[0] != '.' || (local_dirname[1] && local_dirname[1] != '/'))
|
278
|
+
+ if we want to skip paths beginning with ./ also. */
|
279
|
+
if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1]))
|
280
|
+
{
|
281
|
+
***************
|
282
|
+
|
283
|
+
|
284
|
+
int len1, len2;
|
285
|
+
|
286
|
+
+ /* If we have a relative path
|
287
|
+
+ (local_dirname[0] != '/' && local_dirname[0] != '.')
|
288
|
+
+ that is canonical after appending it to the current directory, then
|
289
|
+
+ temp1 = temp2+'/'
|
290
|
+
+ That is,
|
291
|
+
+ strcmp (temp1, temp2) == 0
|
292
|
+
+ after adding a slash to temp2 below. It should be safe to not
|
293
|
+
+ change those.
|
294
|
+
+ */
|
295
|
+
t = get_working_directory ("symlink-hook");
|
296
|
+
temp1 = make_absolute (local_dirname, t);
|
297
|
+
***************
|
298
|
+
|
299
|
+
}
|
300
|
+
}
|
301
|
+
! return_value |= STREQ (local_dirname, temp2) == 0;
|
302
|
+
free (local_dirname);
|
303
|
+
*dirname = temp2;
|
304
|
+
|
305
|
+
}
|
306
|
+
}
|
307
|
+
!
|
308
|
+
! /* dircomplete_expand_relpath == 0 means we want to leave relative
|
309
|
+
! pathnames that are unchanged by canonicalization alone.
|
310
|
+
! *local_dirname != '/' && *local_dirname != '.' == relative pathname
|
311
|
+
! (consistent with general.c:absolute_pathname())
|
312
|
+
! temp1 == temp2 (after appending a slash to temp2) means the pathname
|
313
|
+
! is not changed by canonicalization as described above. */
|
314
|
+
! if (dircomplete_expand_relpath || ((local_dirname[0] != '/' && local_dirname[0] != '.') && STREQ (temp1, temp2) == 0))
|
315
|
+
! return_value |= STREQ (local_dirname, temp2) == 0;
|
316
|
+
free (local_dirname);
|
317
|
+
*dirname = temp2;
|
318
|
+
***************
|
319
|
+
|
320
|
+
orig_func = rl_completion_entry_function;
|
321
|
+
orig_attempt_func = rl_attempted_completion_function;
|
322
|
+
- orig_dir_func = rl_directory_rewrite_hook;
|
323
|
+
orig_ignore_func = rl_ignore_some_completions_function;
|
324
|
+
orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
|
325
|
+
rl_completion_entry_function = rl_filename_completion_function;
|
326
|
+
rl_attempted_completion_function = (rl_completion_func_t *)NULL;
|
327
|
+
- rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
|
328
|
+
rl_ignore_some_completions_function = filename_completion_ignore;
|
329
|
+
rl_completer_word_break_characters = " \t\n\"\'";
|
330
|
+
|
331
|
+
orig_func = rl_completion_entry_function;
|
332
|
+
orig_attempt_func = rl_attempted_completion_function;
|
333
|
+
orig_ignore_func = rl_ignore_some_completions_function;
|
334
|
+
orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
|
335
|
+
+
|
336
|
+
+ orig_dir_func = save_directory_hook ();
|
337
|
+
+
|
338
|
+
rl_completion_entry_function = rl_filename_completion_function;
|
339
|
+
rl_attempted_completion_function = (rl_completion_func_t *)NULL;
|
340
|
+
rl_ignore_some_completions_function = filename_completion_ignore;
|
341
|
+
rl_completer_word_break_characters = " \t\n\"\'";
|
342
|
+
***************
|
343
|
+
|
344
|
+
rl_completion_entry_function = orig_func;
|
345
|
+
rl_attempted_completion_function = orig_attempt_func;
|
346
|
+
- rl_directory_rewrite_hook = orig_dir_func;
|
347
|
+
rl_ignore_some_completions_function = orig_ignore_func;
|
348
|
+
rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
|
349
|
+
|
350
|
+
return r;
|
351
|
+
}
|
352
|
+
|
353
|
+
rl_completion_entry_function = orig_func;
|
354
|
+
rl_attempted_completion_function = orig_attempt_func;
|
355
|
+
rl_ignore_some_completions_function = orig_ignore_func;
|
356
|
+
rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
|
357
|
+
|
358
|
+
+ restore_directory_hook (orig_dir_func);
|
359
|
+
+
|
360
|
+
return r;
|
361
|
+
}
|
362
|
+
diff -NrC 2 ../bash-4.2-patched/bashline.h ./bashline.h
|
363
|
+
*** ../bash-4.2-patched/bashline.h 2009-01-04 14:32:22.000000000 -0500
|
364
|
+
--- ./bashline.h 2012-05-07 16:27:18.000000000 -0400
|
365
|
+
***************
|
366
|
+
|
367
|
+
|
368
|
+
extern int bash_re_edit __P((char *));
|
369
|
+
|
370
|
+
+ extern void bashline_set_event_hook __P((void));
|
371
|
+
+ extern void bashline_reset_event_hook __P((void));
|
372
|
+
+
|
373
|
+
extern int bind_keyseq_to_unix_command __P((char *));
|
374
|
+
|
375
|
+
extern char **bash_default_completion __P((const char *, int, int, int, int));
|
376
|
+
|
377
|
+
+ void set_directory_hook __P((void));
|
378
|
+
+
|
379
|
+
/* Used by programmable completion code. */
|
380
|
+
extern char *command_word_completion_function __P((const char *, int));
|
381
|
+
diff -NrC 2 ../bash-4.2-patched/builtins/shopt.def ./builtins/shopt.def
|
382
|
+
*** ../bash-4.2-patched/builtins/shopt.def 2010-07-02 22:42:44.000000000 -0400
|
383
|
+
--- ./builtins/shopt.def 2012-05-07 16:27:18.000000000 -0400
|
384
|
+
***************
|
385
|
+
|
386
|
+
|
387
|
+
include "bashgetopt.h"
|
388
|
+
|
389
|
+
+
|
390
|
+
+
|
391
|
+
+
|
392
|
+
+
|
393
|
+
if defined (HISTORY)
|
394
|
+
include "../bashhist.h"
|
395
|
+
***************
|
396
|
+
|
397
|
+
extern int no_empty_command_completion;
|
398
|
+
extern int force_fignore;
|
399
|
+
! extern int dircomplete_spelling;
|
400
|
+
|
401
|
+
extern int enable_hostname_completion __P((int));
|
402
|
+
|
403
|
+
extern int no_empty_command_completion;
|
404
|
+
extern int force_fignore;
|
405
|
+
! extern int dircomplete_spelling, dircomplete_expand;
|
406
|
+
|
407
|
+
extern int enable_hostname_completion __P((int));
|
408
|
+
***************
|
409
|
+
|
410
|
+
|
411
|
+
endif
|
412
|
+
|
413
|
+
+
|
414
|
+
+ static int shopt_set_complete_direxpand __P((char *, int));
|
415
|
+
+
|
416
|
+
+
|
417
|
+
static int shopt_login_shell;
|
418
|
+
static int shopt_compat31;
|
419
|
+
***************
|
420
|
+
|
421
|
+
|
422
|
+
{ "compat41", &shopt_compat41, set_compatibility_level },
|
423
|
+
if defined (READLINE)
|
424
|
+
+ { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand },
|
425
|
+
{ "dirspell", &dircomplete_spelling, (shopt_set_func_t *)NULL },
|
426
|
+
endif
|
427
|
+
***************
|
428
|
+
|
429
|
+
|
430
|
+
}
|
431
|
+
|
432
|
+
+
|
433
|
+
+ static int
|
434
|
+
+ shopt_set_complete_direxpand (option_name, mode)
|
435
|
+
+ char *option_name;
|
436
|
+
+ int mode;
|
437
|
+
+ {
|
438
|
+
+ set_directory_hook ();
|
439
|
+
+ return 0;
|
440
|
+
+ }
|
441
|
+
+
|
442
|
+
+
|
443
|
+
if defined (RESTRICTED_SHELL)
|
444
|
+
/* Don't allow the value of restricted_shell to be modified. */
|
445
|
+
Binary files ../bash-4.2-patched/doc/._bashref.pdf and ./doc/._bashref.pdf differ
|
446
|
+
diff -NrC 2 ../bash-4.2-patched/doc/bash.1 ./doc/bash.1
|
447
|
+
*** ../bash-4.2-patched/doc/bash.1 2011-01-16 15:31:39.000000000 -0500
|
448
|
+
--- ./doc/bash.1 2012-05-07 16:27:18.000000000 -0400
|
449
|
+
***************
|
450
|
+
|
451
|
+
|
452
|
+
The default bash behavior remains as in previous versions.
|
453
|
+
.TP 8
|
454
|
+
+ .B direxpand
|
455
|
+
+ If set,
|
456
|
+
+ .B bash
|
457
|
+
+ replaces directory names with the results of word expansion when performing
|
458
|
+
+ filename completion. This changes the contents of the readline editing
|
459
|
+
+ buffer.
|
460
|
+
+ If not set,
|
461
|
+
+ .B bash
|
462
|
+
+ attempts to preserve what the user typed.
|
463
|
+
+ .TP 8
|
464
|
+
.B dirspell
|
465
|
+
If set,
|
466
|
+
diff -NrC 2 ../bash-4.2-patched/doc/bashref.texi ./doc/bashref.texi
|
467
|
+
*** ../bash-4.2-patched/doc/bashref.texi 2011-01-16 15:31:57.000000000 -0500
|
468
|
+
--- ./doc/bashref.texi 2012-05-07 16:27:18.000000000 -0400
|
469
|
+
***************
|
470
|
+
|
471
|
+
|
472
|
+
The default Bash behavior remains as in previous versions.
|
473
|
+
|
474
|
+
+
direxpand
|
475
|
+
+ If set, Bash
|
476
|
+
+ replaces directory names with the results of word expansion when performing
|
477
|
+
+ filename completion. This changes the contents of the readline editing
|
478
|
+
+ buffer.
|
479
|
+
+ If not set, Bash attempts to preserve what the user typed.
|
480
|
+
+
|
481
|
+
dirspell
|
482
|
+
If set, Bash
|
483
|
+
diff -NrC 2 ../bash-4.2-patched/tests/shopt.right ./tests/shopt.right
|
484
|
+
*** ../bash-4.2-patched/tests/shopt.right 2010-07-02 23:36:30.000000000 -0400
|
485
|
+
--- ./tests/shopt.right 2012-05-07 16:27:18.000000000 -0400
|
486
|
+
***************
|
487
|
+
|
488
|
+
|
489
|
+
shopt -u compat40
|
490
|
+
shopt -u compat41
|
491
|
+
+ shopt -u direxpand
|
492
|
+
shopt -u dirspell
|
493
|
+
shopt -u dotglob
|
494
|
+
***************
|
495
|
+
|
496
|
+
|
497
|
+
shopt -u compat40
|
498
|
+
shopt -u compat41
|
499
|
+
+ shopt -u direxpand
|
500
|
+
shopt -u dirspell
|
501
|
+
shopt -u dotglob
|
502
|
+
***************
|
503
|
+
|
504
|
+
|
505
|
+
compat40 off
|
506
|
+
compat41 off
|
507
|
+
+ direxpand off
|
508
|
+
dirspell off
|
509
|
+
dotglob off
|
510
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
511
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
512
|
+
***************
|
513
|
+
|
514
|
+
looks for to find the patch level (for the sccs version string). */
|
515
|
+
|
516
|
+
!
|
517
|
+
|
518
|
+
|
519
|
+
|
520
|
+
looks for to find the patch level (for the sccs version string). */
|
521
|
+
|
522
|
+
!
|
523
|
+
|
524
|
+
|
@@ -0,0 +1,178 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-030
|
6
|
+
|
7
|
+
Bug-Reported-by: Roman Rakus <rrakus@redhat.com>
|
8
|
+
Bug-Reference-ID: <4D7DD91E.7040808@redhat.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00126.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When attempting to glob strings in a multibyte locale, and those strings
|
14
|
+
contain invalid multibyte characters that cause mbsnrtowcs to return 0,
|
15
|
+
the globbing code loops infinitely.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c 2010-05-30 18:36:27.000000000 -0400
|
20
|
+
--- lib/glob/xmbsrtowcs.c 2011-03-22 16:06:47.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
if HANDLE_MULTIBYTE
|
25
|
+
|
26
|
+
+
|
27
|
+
+
|
28
|
+
ifndef FREE
|
29
|
+
define FREE(x) do { if (x) free (x); } while (0)
|
30
|
+
***************
|
31
|
+
|
32
|
+
size_t wcnum; /* Number of wide characters in WSBUF */
|
33
|
+
mbstate_t state; /* Conversion State */
|
34
|
+
! size_t wcslength; /* Number of wide characters produced by the conversion. */
|
35
|
+
const char *end_or_backslash;
|
36
|
+
size_t nms; /* Number of multibyte characters to convert at one time. */
|
37
|
+
|
38
|
+
size_t wcnum; /* Number of wide characters in WSBUF */
|
39
|
+
mbstate_t state; /* Conversion State */
|
40
|
+
! size_t n, wcslength; /* Number of wide characters produced by the conversion. */
|
41
|
+
const char *end_or_backslash;
|
42
|
+
size_t nms; /* Number of multibyte characters to convert at one time. */
|
43
|
+
***************
|
44
|
+
|
45
|
+
tmp_p = p;
|
46
|
+
tmp_state = state;
|
47
|
+
! wcslength = mbsnrtowcs(NULL, &tmp_p, nms, 0, &tmp_state);
|
48
|
+
|
49
|
+
/* Conversion failed. */
|
50
|
+
|
51
|
+
tmp_p = p;
|
52
|
+
tmp_state = state;
|
53
|
+
!
|
54
|
+
! if (nms == 0 && *p == '\\') /* special initial case */
|
55
|
+
! nms = wcslength = 1;
|
56
|
+
! else
|
57
|
+
! wcslength = mbsnrtowcs (NULL, &tmp_p, nms, 0, &tmp_state);
|
58
|
+
!
|
59
|
+
! if (wcslength == 0)
|
60
|
+
! {
|
61
|
+
! tmp_p = p; /* will need below */
|
62
|
+
! tmp_state = state;
|
63
|
+
! wcslength = 1; /* take a single byte */
|
64
|
+
! }
|
65
|
+
|
66
|
+
/* Conversion failed. */
|
67
|
+
***************
|
68
|
+
|
69
|
+
wchar_t *wstmp;
|
70
|
+
|
71
|
+
! wsbuf_size = wcnum+wcslength+1; /* 1 for the L'\0' or the potential L'\\' */
|
72
|
+
|
73
|
+
wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t));
|
74
|
+
|
75
|
+
wchar_t *wstmp;
|
76
|
+
|
77
|
+
! while (wsbuf_size < wcnum+wcslength+1) /* 1 for the L'\0' or the potential L'\\' */
|
78
|
+
! wsbuf_size += WSBUF_INC;
|
79
|
+
|
80
|
+
wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t));
|
81
|
+
***************
|
82
|
+
|
83
|
+
|
84
|
+
/* Perform the conversion. This is assumed to return 'wcslength'.
|
85
|
+
! * It may set 'p' to NULL. */
|
86
|
+
! mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
|
87
|
+
|
88
|
+
! wcnum += wcslength;
|
89
|
+
|
90
|
+
if (mbsinit (&state) && (p != NULL) && (*p == '\\'))
|
91
|
+
|
92
|
+
|
93
|
+
/* Perform the conversion. This is assumed to return 'wcslength'.
|
94
|
+
! It may set 'p' to NULL. */
|
95
|
+
! n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
|
96
|
+
|
97
|
+
! /* Compensate for taking single byte on wcs conversion failure above. */
|
98
|
+
! if (wcslength == 1 && (n == 0 || n == (size_t)-1))
|
99
|
+
! {
|
100
|
+
! state = tmp_state;
|
101
|
+
! p = tmp_p;
|
102
|
+
! wsbuf[wcnum++] = *p++;
|
103
|
+
! }
|
104
|
+
! else
|
105
|
+
! wcnum += wcslength;
|
106
|
+
|
107
|
+
if (mbsinit (&state) && (p != NULL) && (*p == '\\'))
|
108
|
+
***************
|
109
|
+
|
110
|
+
of DESTP and INDICESP are NULL. */
|
111
|
+
|
112
|
+
-
|
113
|
+
-
|
114
|
+
size_t
|
115
|
+
xdupmbstowcs (destp, indicesp, src)
|
116
|
+
|
117
|
+
*** ../bash-4.2-patched/lib/glob/glob.c 2009-11-14 18:39:30.000000000 -0500
|
118
|
+
--- lib/glob/glob.c 2012-07-07 12:09:56.000000000 -0400
|
119
|
+
***************
|
120
|
+
|
121
|
+
size_t pat_n, dn_n;
|
122
|
+
|
123
|
+
pat_n = xdupmbstowcs (&pat_wc, NULL, pat);
|
124
|
+
! dn_n = xdupmbstowcs (&dn_wc, NULL, dname);
|
125
|
+
|
126
|
+
ret = 0;
|
127
|
+
|
128
|
+
size_t pat_n, dn_n;
|
129
|
+
|
130
|
+
+ pat_wc = dn_wc = (wchar_t *)NULL;
|
131
|
+
+
|
132
|
+
pat_n = xdupmbstowcs (&pat_wc, NULL, pat);
|
133
|
+
! if (pat_n != (size_t)-1)
|
134
|
+
! dn_n = xdupmbstowcs (&dn_wc, NULL, dname);
|
135
|
+
|
136
|
+
ret = 0;
|
137
|
+
***************
|
138
|
+
|
139
|
+
|
140
|
+
ret = 1;
|
141
|
+
}
|
142
|
+
+ else
|
143
|
+
+ ret = skipname (pat, dname, flags);
|
144
|
+
|
145
|
+
FREE (pat_wc);
|
146
|
+
***************
|
147
|
+
|
148
|
+
n = xdupmbstowcs (&wpathname, NULL, pathname);
|
149
|
+
if (n == (size_t) -1)
|
150
|
+
! /* Something wrong. */
|
151
|
+
! return;
|
152
|
+
orig_wpathname = wpathname;
|
153
|
+
|
154
|
+
|
155
|
+
n = xdupmbstowcs (&wpathname, NULL, pathname);
|
156
|
+
if (n == (size_t) -1)
|
157
|
+
! {
|
158
|
+
! /* Something wrong. Fall back to single-byte */
|
159
|
+
! udequote_pathname (pathname);
|
160
|
+
! return;
|
161
|
+
! }
|
162
|
+
orig_wpathname = wpathname;
|
163
|
+
|
164
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
165
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
166
|
+
***************
|
167
|
+
|
168
|
+
looks for to find the patch level (for the sccs version string). */
|
169
|
+
|
170
|
+
!
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
looks for to find the patch level (for the sccs version string). */
|
175
|
+
|
176
|
+
!
|
177
|
+
|
178
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-031
|
6
|
+
|
7
|
+
Bug-Reported-by: Max Horn <max@quendi.de>
|
8
|
+
Bug-Reference-ID: <20CC5C60-07C3-4E41-9817-741E48D407C5@quendi.de>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
A change between bash-4.1 and bash-4.2 to prevent the readline input hook
|
14
|
+
from being called too frequently had the side effect of causing delays
|
15
|
+
when reading pasted input on systems such as Mac OS X. This patch fixes
|
16
|
+
those delays while retaining the bash-4.2 behavior.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/lib/readline/input.c 2010-05-30 18:33:01.000000000 -0400
|
21
|
+
--- lib/readline/input.c 2012-06-25 21:08:42.000000000 -0400
|
22
|
+
***************
|
23
|
+
|
24
|
+
rl_read_key ()
|
25
|
+
{
|
26
|
+
! int c;
|
27
|
+
|
28
|
+
rl_key_sequence_length++;
|
29
|
+
|
30
|
+
rl_read_key ()
|
31
|
+
{
|
32
|
+
! int c, r;
|
33
|
+
|
34
|
+
rl_key_sequence_length++;
|
35
|
+
***************
|
36
|
+
|
37
|
+
while (rl_event_hook)
|
38
|
+
{
|
39
|
+
! if (rl_gather_tyi () < 0) /* XXX - EIO */
|
40
|
+
{
|
41
|
+
rl_done = 1;
|
42
|
+
return ('\n');
|
43
|
+
}
|
44
|
+
RL_CHECK_SIGNALS ();
|
45
|
+
- if (rl_get_char (&c) != 0)
|
46
|
+
- break;
|
47
|
+
if (rl_done) /* XXX - experimental */
|
48
|
+
return ('\n');
|
49
|
+
|
50
|
+
while (rl_event_hook)
|
51
|
+
{
|
52
|
+
! if (rl_get_char (&c) != 0)
|
53
|
+
! break;
|
54
|
+
!
|
55
|
+
! if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */
|
56
|
+
{
|
57
|
+
rl_done = 1;
|
58
|
+
return ('\n');
|
59
|
+
}
|
60
|
+
+ else if (r == 1) /* read something */
|
61
|
+
+ continue;
|
62
|
+
+
|
63
|
+
RL_CHECK_SIGNALS ();
|
64
|
+
if (rl_done) /* XXX - experimental */
|
65
|
+
return ('\n');
|
66
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
67
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
68
|
+
***************
|
69
|
+
|
70
|
+
looks for to find the patch level (for the sccs version string). */
|
71
|
+
|
72
|
+
!
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
looks for to find the patch level (for the sccs version string). */
|
77
|
+
|
78
|
+
!
|
79
|
+
|
80
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-032
|
6
|
+
|
7
|
+
Bug-Reported-by: Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
|
8
|
+
Bug-Reference-ID: <OFDE975207.0C3622E5-ONC12579F3.00361A06-C12579F3.00365E39@orga-systems.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-05/msg00010.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash-4.2 has problems with DEL characters in the expanded value of variables
|
14
|
+
used in the same quoted string as variables that expand to nothing.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-20120427/subst.c 2012-04-22 16:19:10.000000000 -0400
|
19
|
+
--- subst.c 2012-05-07 16:06:35.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
dispose_word_desc (tword);
|
24
|
+
|
25
|
+
+ /* Kill quoted nulls; we will add them back at the end of
|
26
|
+
+ expand_word_internal if nothing else in the string */
|
27
|
+
+ if (had_quoted_null && temp && QUOTED_NULL (temp))
|
28
|
+
+ {
|
29
|
+
+ FREE (temp);
|
30
|
+
+ temp = (char *)NULL;
|
31
|
+
+ }
|
32
|
+
+
|
33
|
+
goto add_string;
|
34
|
+
break;
|
35
|
+
***************
|
36
|
+
|
37
|
+
if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
|
38
|
+
tword->flags |= W_QUOTED;
|
39
|
+
! if (had_quoted_null)
|
40
|
+
tword->flags |= W_HASQUOTEDNULL;
|
41
|
+
list = make_word_list (tword, (WORD_LIST *)NULL);
|
42
|
+
|
43
|
+
if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
|
44
|
+
tword->flags |= W_QUOTED;
|
45
|
+
! if (had_quoted_null && QUOTED_NULL (istring))
|
46
|
+
tword->flags |= W_HASQUOTEDNULL;
|
47
|
+
list = make_word_list (tword, (WORD_LIST *)NULL);
|
48
|
+
***************
|
49
|
+
|
50
|
+
if (word->flags & W_NOEXPAND)
|
51
|
+
tword->flags |= W_NOEXPAND;
|
52
|
+
! if (had_quoted_null)
|
53
|
+
tword->flags |= W_HASQUOTEDNULL; /* XXX */
|
54
|
+
list = make_word_list (tword, (WORD_LIST *)NULL);
|
55
|
+
|
56
|
+
if (word->flags & W_NOEXPAND)
|
57
|
+
tword->flags |= W_NOEXPAND;
|
58
|
+
! if (had_quoted_null && QUOTED_NULL (istring))
|
59
|
+
tword->flags |= W_HASQUOTEDNULL; /* XXX */
|
60
|
+
list = make_word_list (tword, (WORD_LIST *)NULL);
|
61
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
62
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
63
|
+
***************
|
64
|
+
|
65
|
+
looks for to find the patch level (for the sccs version string). */
|
66
|
+
|
67
|
+
!
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
looks for to find the patch level (for the sccs version string). */
|
72
|
+
|
73
|
+
!
|
74
|
+
|
75
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-033
|
6
|
+
|
7
|
+
Bug-Reported-by: David Leverton <levertond@googlemail.com>
|
8
|
+
Bug-Reference-ID: <4FCCE737.1060603@googlemail.com>
|
9
|
+
Bug-Reference-URL:
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash uses a static buffer when expanding the /dev/fd prefix for the test
|
14
|
+
and conditional commands, among other uses, when it should use a dynamic
|
15
|
+
buffer to avoid buffer overflow.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/lib/sh/eaccess.c 2011-01-08 20:50:10.000000000 -0500
|
20
|
+
--- lib/sh/eaccess.c 2012-06-04 21:06:43.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
struct stat *finfo;
|
25
|
+
{
|
26
|
+
+ static char *pbuf = 0;
|
27
|
+
+
|
28
|
+
if (*path == '\0')
|
29
|
+
{
|
30
|
+
***************
|
31
|
+
|
32
|
+
On most systems, with the notable exception of linux, this is
|
33
|
+
effectively a no-op. */
|
34
|
+
! char pbuf[32];
|
35
|
+
strcpy (pbuf, DEV_FD_PREFIX);
|
36
|
+
strcat (pbuf, path + 8);
|
37
|
+
|
38
|
+
On most systems, with the notable exception of linux, this is
|
39
|
+
effectively a no-op. */
|
40
|
+
! pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
|
41
|
+
strcpy (pbuf, DEV_FD_PREFIX);
|
42
|
+
strcat (pbuf, path + 8);
|
43
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
44
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
45
|
+
***************
|
46
|
+
|
47
|
+
looks for to find the patch level (for the sccs version string). */
|
48
|
+
|
49
|
+
!
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
looks for to find the patch level (for the sccs version string). */
|
54
|
+
|
55
|
+
!
|
56
|
+
|
57
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-034
|
6
|
+
|
7
|
+
Bug-Reported-by: "Davide Brini" <dave_br .com>
|
8
|
+
Bug-Reference-ID: <20120604164154.69781EC04B@imaps.oficinas.atrapalo.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-06/msg00030.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
In bash-4.2, the history code would inappropriately add a semicolon to
|
14
|
+
multi-line compound array assignments when adding them to the history.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/parse.y 2011-11-21 18:03:36.000000000 -0500
|
19
|
+
--- parse.y 2012-06-07 12:48:47.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
return (current_command_line_count == 2 ? "\n" : "");
|
24
|
+
}
|
25
|
+
|
26
|
+
+ if (parser_state & PST_COMPASSIGN)
|
27
|
+
+ return (" ");
|
28
|
+
+
|
29
|
+
/* First, handle some special cases. */
|
30
|
+
/*(*/
|
31
|
+
/* If we just read `()', assume it's a function definition, and don't
|
32
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
33
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
34
|
+
***************
|
35
|
+
|
36
|
+
looks for to find the patch level (for the sccs version string). */
|
37
|
+
|
38
|
+
!
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
looks for to find the patch level (for the sccs version string). */
|
43
|
+
|
44
|
+
!
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-035
|
6
|
+
|
7
|
+
Bug-Reported-by: Dan Douglas <ormaaj@gmail.com>
|
8
|
+
Bug-Reference-ID: <2766482.Ksm3GrSoYi@smorgbox>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-06/msg00071.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When given a number of lines to read, `mapfile -n lines' reads one too many.
|
14
|
+
|
15
|
+
Patch (apply with `patch -p0'):
|
16
|
+
|
17
|
+
*** ../bash-4.2-patched/builtins/mapfile.def 2010-05-29 22:09:47.000000000 -0400
|
18
|
+
--- builtins/mapfile.def 2012-06-20 09:48:33.000000000 -0400
|
19
|
+
***************
|
20
|
+
|
21
|
+
interrupt_immediately++;
|
22
|
+
for (array_index = origin, line_count = 1;
|
23
|
+
! zgetline (fd, &line, &line_length, unbuffered_read) != -1;
|
24
|
+
! array_index++, line_count++)
|
25
|
+
{
|
26
|
+
- /* Have we exceeded # of lines to store? */
|
27
|
+
- if (line_count_goal != 0 && line_count > line_count_goal)
|
28
|
+
- break;
|
29
|
+
-
|
30
|
+
/* Remove trailing newlines? */
|
31
|
+
if (flags & MAPF_CHOP)
|
32
|
+
|
33
|
+
interrupt_immediately++;
|
34
|
+
for (array_index = origin, line_count = 1;
|
35
|
+
! zgetline (fd, &line, &line_length, unbuffered_read) != -1;
|
36
|
+
! array_index++)
|
37
|
+
{
|
38
|
+
/* Remove trailing newlines? */
|
39
|
+
if (flags & MAPF_CHOP)
|
40
|
+
***************
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
bind_array_element (entry, array_index, line, 0);
|
45
|
+
+
|
46
|
+
+ /* Have we exceeded # of lines to store? */
|
47
|
+
+ line_count++;
|
48
|
+
+ if (line_count_goal != 0 && line_count > line_count_goal)
|
49
|
+
+ break;
|
50
|
+
}
|
51
|
+
|
52
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
53
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
54
|
+
***************
|
55
|
+
|
56
|
+
looks for to find the patch level (for the sccs version string). */
|
57
|
+
|
58
|
+
!
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
looks for to find the patch level (for the sccs version string). */
|
63
|
+
|
64
|
+
!
|
65
|
+
|
66
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-036
|
6
|
+
|
7
|
+
Bug-Reported-by: gregrwm <backuppc-users@whitleymott.net>
|
8
|
+
Bug-Reference-ID: <CAD+dB9B4JG+qUwZBQUwiQmVt0j6NDn=DDTxr9R+nkA8DL4KLJA
.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-05/msg00108.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash-4.2 produces incorrect word splitting results when expanding
|
14
|
+
double-quoted $@ in the same string as and adjacent to other variable
|
15
|
+
expansions. The $@ should be split, the other expansions should not.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/subst.c 2012-05-02 12:02:33.000000000 -0400
|
20
|
+
--- subst.c 2012-07-08 21:19:32.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
/* State flags */
|
24
|
+
int had_quoted_null;
|
25
|
+
! int has_dollar_at;
|
26
|
+
int tflag;
|
27
|
+
int pflags; /* flags passed to param_expand */
|
28
|
+
|
29
|
+
/* State flags */
|
30
|
+
int had_quoted_null;
|
31
|
+
! int has_dollar_at, temp_has_dollar_at;
|
32
|
+
int tflag;
|
33
|
+
int pflags; /* flags passed to param_expand */
|
34
|
+
***************
|
35
|
+
|
36
|
+
*expanded_something = 1;
|
37
|
+
|
38
|
+
! has_dollar_at = 0;
|
39
|
+
pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
|
40
|
+
if (word->flags & W_NOSPLIT2)
|
41
|
+
pflags |= PF_NOSPLIT2;
|
42
|
+
tword = param_expand (string, &sindex, quoted, expanded_something,
|
43
|
+
! &has_dollar_at, "ed_dollar_at,
|
44
|
+
&had_quoted_null, pflags);
|
45
|
+
|
46
|
+
if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal)
|
47
|
+
|
48
|
+
*expanded_something = 1;
|
49
|
+
|
50
|
+
! temp_has_dollar_at = 0;
|
51
|
+
pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
|
52
|
+
if (word->flags & W_NOSPLIT2)
|
53
|
+
pflags |= PF_NOSPLIT2;
|
54
|
+
tword = param_expand (string, &sindex, quoted, expanded_something,
|
55
|
+
! &temp_has_dollar_at, "ed_dollar_at,
|
56
|
+
&had_quoted_null, pflags);
|
57
|
+
+ has_dollar_at += temp_has_dollar_at;
|
58
|
+
|
59
|
+
if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal)
|
60
|
+
***************
|
61
|
+
|
62
|
+
temp = (char *)NULL;
|
63
|
+
|
64
|
+
! has_dollar_at = 0;
|
65
|
+
/* Need to get W_HASQUOTEDNULL flag through this function. */
|
66
|
+
! list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &has_dollar_at, (int *)NULL);
|
67
|
+
|
68
|
+
if (list == &expand_word_error || list == &expand_word_fatal)
|
69
|
+
|
70
|
+
temp = (char *)NULL;
|
71
|
+
|
72
|
+
! temp_has_dollar_at = 0; /* XXX */
|
73
|
+
/* Need to get W_HASQUOTEDNULL flag through this function. */
|
74
|
+
! list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL);
|
75
|
+
! has_dollar_at += temp_has_dollar_at;
|
76
|
+
|
77
|
+
if (list == &expand_word_error || list == &expand_word_fatal)
|
78
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
79
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
80
|
+
***************
|
81
|
+
|
82
|
+
looks for to find the patch level (for the sccs version string). */
|
83
|
+
|
84
|
+
!
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
looks for to find the patch level (for the sccs version string). */
|
89
|
+
|
90
|
+
!
|
91
|
+
|
92
|
+
|
@@ -0,0 +1,112 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-037
|
6
|
+
|
7
|
+
Bug-Reported-by: Jakub Filak
|
8
|
+
Bug-Reference-ID:
|
9
|
+
Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=813289
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
|
14
|
+
commands leads to an infinite loop.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/lib/readline/vi_mode.c 2011-02-25 11:17:02.000000000 -0500
|
19
|
+
--- lib/readline/vi_mode.c 2012-06-02 12:24:47.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
23
|
+
}
|
24
|
+
! else if (vi_redoing)
|
25
|
+
{
|
26
|
+
_rl_vimvcxt->motion = _rl_vi_last_motion;
|
27
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
28
|
+
}
|
29
|
+
if defined (READLINE_CALLBACKS)
|
30
|
+
else if (RL_ISSTATE (RL_STATE_CALLBACK))
|
31
|
+
|
32
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
33
|
+
}
|
34
|
+
! else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */
|
35
|
+
{
|
36
|
+
_rl_vimvcxt->motion = _rl_vi_last_motion;
|
37
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
38
|
+
}
|
39
|
+
+ else if (vi_redoing) /* handle redoing `dd' here */
|
40
|
+
+ {
|
41
|
+
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
|
42
|
+
+ rl_mark = rl_end;
|
43
|
+
+ rl_beg_of_line (1, key);
|
44
|
+
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
|
45
|
+
+ r = vidomove_dispatch (_rl_vimvcxt);
|
46
|
+
+ }
|
47
|
+
if defined (READLINE_CALLBACKS)
|
48
|
+
else if (RL_ISSTATE (RL_STATE_CALLBACK))
|
49
|
+
***************
|
50
|
+
|
51
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
52
|
+
}
|
53
|
+
! else if (vi_redoing)
|
54
|
+
{
|
55
|
+
_rl_vimvcxt->motion = _rl_vi_last_motion;
|
56
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
57
|
+
}
|
58
|
+
if defined (READLINE_CALLBACKS)
|
59
|
+
else if (RL_ISSTATE (RL_STATE_CALLBACK))
|
60
|
+
|
61
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
62
|
+
}
|
63
|
+
! else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */
|
64
|
+
{
|
65
|
+
_rl_vimvcxt->motion = _rl_vi_last_motion;
|
66
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
67
|
+
}
|
68
|
+
+ else if (vi_redoing) /* handle redoing `cc' here */
|
69
|
+
+ {
|
70
|
+
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
|
71
|
+
+ rl_mark = rl_end;
|
72
|
+
+ rl_beg_of_line (1, key);
|
73
|
+
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
|
74
|
+
+ r = vidomove_dispatch (_rl_vimvcxt);
|
75
|
+
+ }
|
76
|
+
if defined (READLINE_CALLBACKS)
|
77
|
+
else if (RL_ISSTATE (RL_STATE_CALLBACK))
|
78
|
+
***************
|
79
|
+
|
80
|
+
|
81
|
+
r = rl_domove_motion_callback (_rl_vimvcxt);
|
82
|
+
}
|
83
|
+
+ else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */
|
84
|
+
+ {
|
85
|
+
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
|
86
|
+
+ r = rl_domove_motion_callback (_rl_vimvcxt);
|
87
|
+
+ }
|
88
|
+
+ else if (vi_redoing) /* handle redoing `yy' here */
|
89
|
+
+ {
|
90
|
+
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
|
91
|
+
+ rl_mark = rl_end;
|
92
|
+
+ rl_beg_of_line (1, key);
|
93
|
+
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
|
94
|
+
+ r = vidomove_dispatch (_rl_vimvcxt);
|
95
|
+
+ }
|
96
|
+
if defined (READLINE_CALLBACKS)
|
97
|
+
else if (RL_ISSTATE (RL_STATE_CALLBACK))
|
98
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
99
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
100
|
+
***************
|
101
|
+
|
102
|
+
looks for to find the patch level (for the sccs version string). */
|
103
|
+
|
104
|
+
!
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
looks for to find the patch level (for the sccs version string). */
|
109
|
+
|
110
|
+
!
|
111
|
+
|
112
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-038
|
6
|
+
|
7
|
+
Bug-Reported-by: armandsl@gmail.com
|
8
|
+
Bug-Reference-ID: <20120822112810.8D14920040@windmill.latviatours.lv>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-08/msg00049.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
If a backslash-newline (which is removed) with no other input is given as
|
14
|
+
input to `read', the shell tries to dereference a null pointer and seg faults.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/builtins/read.def 2012-03-11 17:52:44.000000000 -0400
|
19
|
+
--- builtins/read.def 2012-08-22 11:53:09.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
endif
|
23
|
+
|
24
|
+
! if (saw_escape)
|
25
|
+
{
|
26
|
+
t = dequote_string (input_string);
|
27
|
+
|
28
|
+
endif
|
29
|
+
|
30
|
+
! if (saw_escape && input_string && *input_string)
|
31
|
+
{
|
32
|
+
t = dequote_string (input_string);
|
33
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
34
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
35
|
+
***************
|
36
|
+
|
37
|
+
looks for to find the patch level (for the sccs version string). */
|
38
|
+
|
39
|
+
!
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-039
|
6
|
+
|
7
|
+
Bug-Reported-by: Dan Douglas <ormaaj@gmail.com>
|
8
|
+
Bug-Reference-ID: <1498458.MpVlmOXDB7@smorgbox>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-09/msg00008.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Under certain circumstances, bash attempts to expand variables in arithmetic
|
14
|
+
expressions even when evaluation is being suppressed.
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/expr.c 2011-11-21 18:03:35.000000000 -0500
|
19
|
+
--- expr.c 2012-09-09 16:31:18.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
endif
|
24
|
+
|
25
|
+
+ /*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/
|
26
|
+
+ /* If we are suppressing evaluation, just short-circuit here instead of
|
27
|
+
+ going through the rest of the evaluator. */
|
28
|
+
+ if (noeval)
|
29
|
+
+ return (0);
|
30
|
+
+
|
31
|
+
/* [[[[[ */
|
32
|
+
if defined (ARRAY_VARS)
|
33
|
+
***************
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
*cp = '\0';
|
38
|
+
+ /* XXX - watch out for pointer aliasing issues here */
|
39
|
+
+ if (curlval.tokstr && curlval.tokstr == tokstr)
|
40
|
+
+ init_lvalue (&curlval);
|
41
|
+
+
|
42
|
+
FREE (tokstr);
|
43
|
+
tokstr = savestring (tp);
|
44
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
45
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
46
|
+
***************
|
47
|
+
|
48
|
+
looks for to find the patch level (for the sccs version string). */
|
49
|
+
|
50
|
+
!
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
looks for to find the patch level (for the sccs version string). */
|
55
|
+
|
56
|
+
!
|
57
|
+
|
58
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-040
|
6
|
+
|
7
|
+
Bug-Reported-by: Andrey Zaitsev <jstcdr@gmail.com>
|
8
|
+
Bug-Reference-ID: <CAEZVQT5PJ1Mb_Zh8LT5qz8sv+-9Q6hGfQ5DU9ZxdJ+gV7xBUaQ@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00144.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Output redirection applied to builtin commands missed I/O errors if
|
14
|
+
they happened when the file descriptor was closed, rather than on write
|
15
|
+
(e.g., like with an out-of-space error on a remote NFS file system).
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/redir.c 2011-01-02 16:00:31.000000000 -0500
|
20
|
+
--- redir.c 2012-04-24 20:42:12.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
if defined (BUFFERED_INPUT)
|
24
|
+
check_bash_input (redirector);
|
25
|
+
! close_buffered_fd (redirector);
|
26
|
+
else /* !BUFFERED_INPUT */
|
27
|
+
! close (redirector);
|
28
|
+
|
29
|
+
}
|
30
|
+
break;
|
31
|
+
|
32
|
+
if defined (BUFFERED_INPUT)
|
33
|
+
check_bash_input (redirector);
|
34
|
+
! r = close_buffered_fd (redirector);
|
35
|
+
else /* !BUFFERED_INPUT */
|
36
|
+
! r = close (redirector);
|
37
|
+
|
38
|
+
+ if (r < 0 && (flags & RX_INTERNAL) && (errno == EIO || errno == ENOSPC))
|
39
|
+
+ REDIRECTION_ERROR (r, errno, -1);
|
40
|
+
}
|
41
|
+
break;
|
42
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
43
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
44
|
+
***************
|
45
|
+
|
46
|
+
looks for to find the patch level (for the sccs version string). */
|
47
|
+
|
48
|
+
!
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
looks for to find the patch level (for the sccs version string). */
|
53
|
+
|
54
|
+
!
|
55
|
+
|
56
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-041
|
6
|
+
|
7
|
+
Bug-Reported-by: Andrey Borzenkov <arvidjaar@gmail.com>
|
8
|
+
Bug-Reference-ID: <20121202205200.2134478e@opensuse.site>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-12/msg00008.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Process substitution incorrectly inherited a flag that inhibited using the
|
14
|
+
(local) temporary environment for variable lookups if it was providing
|
15
|
+
the filename to a redirection. The intent the flag is to enforce the
|
16
|
+
Posix command expansion ordering rules.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/subst.c 2012-07-14 15:53:20.000000000 -0400
|
21
|
+
--- subst.c 2012-12-02 22:26:54.000000000 -0500
|
22
|
+
***************
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
+ /* subshells shouldn't have this flag, which controls using the temporary
|
28
|
+
+ environment for variable lookups. */
|
29
|
+
+ expanding_redir = 0;
|
30
|
+
+
|
31
|
+
result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
|
32
|
+
|
33
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
34
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
35
|
+
***************
|
36
|
+
|
37
|
+
looks for to find the patch level (for the sccs version string). */
|
38
|
+
|
39
|
+
!
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-042
|
6
|
+
|
7
|
+
Bug-Reported-by: Adam Pippin <adam@gp-inc.ca>
|
8
|
+
Bug-Reference-ID: <CAPYbNHr6ucZFOoWsRdUJj6KP3Ju0j1bkESa_cmb7iU+kZwdVpg@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2012-11/msg00087.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Compilation failed after specifying the `--enable-minimal-config' option to
|
14
|
+
configure (more specifically, specifying `--disable-alias').
|
15
|
+
|
16
|
+
Patch (apply with `patch -p0'):
|
17
|
+
|
18
|
+
*** ../bash-4.2-patched/parse.y 2012-07-08 21:53:33.000000000 -0400
|
19
|
+
--- parse.y 2012-10-14 20:20:34.000000000 -0400
|
20
|
+
***************
|
21
|
+
|
22
|
+
|
23
|
+
to consume the quoted newline and move to the next character in
|
24
|
+
the expansion. */
|
25
|
+
+
|
26
|
+
if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0')
|
27
|
+
{
|
28
|
+
***************
|
29
|
+
|
30
|
+
goto next_alias_char; /* and get next character */
|
31
|
+
}
|
32
|
+
! else
|
33
|
+
goto restart_read;
|
34
|
+
}
|
35
|
+
|
36
|
+
goto next_alias_char; /* and get next character */
|
37
|
+
}
|
38
|
+
! else
|
39
|
+
!
|
40
|
+
goto restart_read;
|
41
|
+
}
|
42
|
+
|
43
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
44
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
45
|
+
***************
|
46
|
+
|
47
|
+
looks for to find the patch level (for the sccs version string). */
|
48
|
+
|
49
|
+
!
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
looks for to find the patch level (for the sccs version string). */
|
54
|
+
|
55
|
+
!
|
56
|
+
|
57
|
+
|
@@ -0,0 +1,65 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-043
|
6
|
+
|
7
|
+
Bug-Reported-by: konsolebox <konsolebox@gmail.com>
|
8
|
+
Bug-Reference-ID: <CAJnmqwZuGKLgMsMwxRK4LL+2NN+HgvmKzrnode99QBGrcgX1Lw@mail.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2013-01/msg00138.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When SIGCHLD is trapped, and a SIGCHLD trap handler runs when a pending
|
14
|
+
`read -t' invocation times out and generates SIGALRM, bash can crash with
|
15
|
+
a segmentation fault.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/builtins/read.def 2012-10-31 21:22:51.000517000 -0400
|
20
|
+
--- builtins/read.def 2013-01-25 10:28:16.000038000 -0500
|
21
|
+
***************
|
22
|
+
|
23
|
+
/* Tricky. The top of the unwind-protect stack is the free of
|
24
|
+
input_string. We want to run all the rest and use input_string,
|
25
|
+
! so we have to remove it from the stack. */
|
26
|
+
! remove_unwind_protect ();
|
27
|
+
! run_unwind_frame ("read_builtin");
|
28
|
+
input_string[i] = '\0'; /* make sure it's terminated */
|
29
|
+
retval = 128+SIGALRM;
|
30
|
+
goto assign_vars;
|
31
|
+
|
32
|
+
/* Tricky. The top of the unwind-protect stack is the free of
|
33
|
+
input_string. We want to run all the rest and use input_string,
|
34
|
+
! so we have to save input_string temporarily, run the unwind-
|
35
|
+
! protects, then restore input_string so we can use it later. */
|
36
|
+
!
|
37
|
+
input_string[i] = '\0'; /* make sure it's terminated */
|
38
|
+
+ if (i == 0)
|
39
|
+
+ {
|
40
|
+
+ t = (char *)xmalloc (1);
|
41
|
+
+ t[0] = 0;
|
42
|
+
+ }
|
43
|
+
+ else
|
44
|
+
+ t = savestring (input_string);
|
45
|
+
+
|
46
|
+
+ run_unwind_frame ("read_builtin");
|
47
|
+
+ input_string = t;
|
48
|
+
retval = 128+SIGALRM;
|
49
|
+
goto assign_vars;
|
50
|
+
|
51
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
52
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
53
|
+
***************
|
54
|
+
|
55
|
+
looks for to find the patch level (for the sccs version string). */
|
56
|
+
|
57
|
+
!
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
looks for to find the patch level (for the sccs version string). */
|
62
|
+
|
63
|
+
!
|
64
|
+
|
65
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-044
|
6
|
+
|
7
|
+
Bug-Reported-by: "Dashing" <dashing .com>
|
8
|
+
Bug-Reference-ID: <20130211175049.D90786F446@smtp.hushmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00030.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When converting a multibyte string to a wide character string as part of
|
14
|
+
pattern matching, bash does not handle the end of the string correctly,
|
15
|
+
causing the search for the NUL to go beyond the end of the string and
|
16
|
+
reference random memory. Depending on the contents of that memory, bash
|
17
|
+
can produce errors or crash.
|
18
|
+
|
19
|
+
Patch (apply with `patch -p0'):
|
20
|
+
|
21
|
+
*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c 2012-07-08 21:53:19.000000000 -0400
|
22
|
+
--- lib/glob/xmbsrtowcs.c 2013-02-12 12:00:39.000000000 -0500
|
23
|
+
***************
|
24
|
+
|
25
|
+
|
26
|
+
n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
|
27
|
+
|
28
|
+
+ if (n == 0 && p == 0)
|
29
|
+
+ {
|
30
|
+
+ wsbuf[wcnum] = L'\0';
|
31
|
+
+ break;
|
32
|
+
+ }
|
33
|
+
+
|
34
|
+
/* Compensate for taking single byte on wcs conversion failure above. */
|
35
|
+
if (wcslength == 1 && (n == 0 || n == (size_t)-1))
|
36
|
+
***************
|
37
|
+
|
38
|
+
state = tmp_state;
|
39
|
+
p = tmp_p;
|
40
|
+
! wsbuf[wcnum++] = *p++;
|
41
|
+
}
|
42
|
+
else
|
43
|
+
|
44
|
+
state = tmp_state;
|
45
|
+
p = tmp_p;
|
46
|
+
! wsbuf[wcnum] = *p;
|
47
|
+
! if (*p == 0)
|
48
|
+
! break;
|
49
|
+
! else
|
50
|
+
! {
|
51
|
+
! wcnum++; p++;
|
52
|
+
! }
|
53
|
+
}
|
54
|
+
else
|
55
|
+
|
56
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
57
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
58
|
+
***************
|
59
|
+
|
60
|
+
looks for to find the patch level (for the sccs version string). */
|
61
|
+
|
62
|
+
!
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
looks for to find the patch level (for the sccs version string). */
|
67
|
+
|
68
|
+
!
|
69
|
+
|
70
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-045
|
6
|
+
|
7
|
+
Bug-Reported-by: Stephane Chazelas <stephane.chazelas@gmail.com>
|
8
|
+
Bug-Reference-ID: <20130218195539.GA9620@chaz.gmail.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00080.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
The <&n- and >&n- redirections, which move one file descriptor to another,
|
14
|
+
leave the file descriptor closed when applied to builtins or compound
|
15
|
+
commands.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2-patched/redir.c 2013-01-30 11:56:09.000000000 -0500
|
20
|
+
--- redir.c 2013-02-19 09:38:36.000000000 -0500
|
21
|
+
***************
|
22
|
+
|
23
|
+
|
24
|
+
REDIRECTION_ERROR (r, errno, -1);
|
25
|
+
}
|
26
|
+
+ if ((flags & RX_UNDOABLE) && (ri == r_move_input || ri == r_move_output))
|
27
|
+
+ {
|
28
|
+
+ /* r_move_input and r_move_output add an additional close()
|
29
|
+
+ that needs to be undone */
|
30
|
+
+ if (fcntl (redirector, F_GETFD, 0) != -1)
|
31
|
+
+ {
|
32
|
+
+ r = add_undo_redirect (redir_fd, r_close_this, -1);
|
33
|
+
+ REDIRECTION_ERROR (r, errno, -1);
|
34
|
+
+ }
|
35
|
+
+ }
|
36
|
+
if defined (BUFFERED_INPUT)
|
37
|
+
check_bash_input (redirector);
|
38
|
+
|
39
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
40
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
41
|
+
***************
|
42
|
+
|
43
|
+
looks for to find the patch level (for the sccs version string). */
|
44
|
+
|
45
|
+
!
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
looks for to find the patch level (for the sccs version string). */
|
50
|
+
|
51
|
+
!
|
52
|
+
|
53
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-046
|
6
|
+
|
7
|
+
Bug-Reported-by: "Theodoros V. Kalamatianos" <thkala .com>
|
8
|
+
Bug-Reference-ID: <20140112011131.GE17667@infinity.metashade.com>
|
9
|
+
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-01/msg00044.html
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
Bash-4.2 patch 32 introduced a problem with "$@" and arrays expanding empty
|
14
|
+
positional parameters or array elements when using substring expansion,
|
15
|
+
pattern substitution, or case modfication. The empty parameters or array
|
16
|
+
elements are removed instead of expanding to empty strings ("").
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2-patched/subst.c 2012-12-31 11:52:56.000000000 -0500
|
21
|
+
--- subst.c 2014-03-31 14:19:56.000000000 -0400
|
22
|
+
***************
|
23
|
+
|
24
|
+
ret = alloc_word_desc ();
|
25
|
+
ret->word = temp1;
|
26
|
+
! if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
|
27
|
+
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
|
28
|
+
return ret;
|
29
|
+
|
30
|
+
ret = alloc_word_desc ();
|
31
|
+
ret->word = temp1;
|
32
|
+
! /* We test quoted_dollar_atp because we want variants with double-quoted
|
33
|
+
! "$@" to take a different code path. In fact, we make sure at the end
|
34
|
+
! of expand_word_internal that we're only looking at these flags if
|
35
|
+
! quoted_dollar_at == 0. */
|
36
|
+
! if (temp1 &&
|
37
|
+
! (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
|
38
|
+
! QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
|
39
|
+
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
|
40
|
+
return ret;
|
41
|
+
*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
|
42
|
+
--- patchlevel.h Thu Feb 24 21:41:34 2011
|
43
|
+
***************
|
44
|
+
|
45
|
+
looks for to find the patch level (for the sccs version string). */
|
46
|
+
|
47
|
+
!
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
looks for to find the patch level (for the sccs version string). */
|
52
|
+
|
53
|
+
!
|
54
|
+
|
55
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-052
|
6
|
+
|
7
|
+
Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx>
|
8
|
+
Bug-Reference-ID:
|
9
|
+
Bug-Reference-URL:
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
When bash is parsing a function definition that contains a here-document
|
14
|
+
delimited by end-of-file (or end-of-string), it leaves the closing delimiter
|
15
|
+
uninitialized. This can result in an invalid memory access when the parsed
|
16
|
+
function is later copied.
|
17
|
+
|
18
|
+
Patch (apply with `patch -p0'):
|
19
|
+
|
20
|
+
*** ../bash-4.2.51/make_cmd.c 2009-09-11 17:26:12.000000000 -0400
|
21
|
+
--- make_cmd.c 2014-10-02 11:26:58.000000000 -0400
|
22
|
+
***************
|
23
|
+
|
24
|
+
|
25
|
+
temp->redirector = source;
|
26
|
+
temp->redirectee = dest_and_filename;
|
27
|
+
+ temp->here_doc_eof = 0;
|
28
|
+
temp->instruction = instruction;
|
29
|
+
temp->flags = 0;
|
30
|
+
*** ../bash-4.2.51/copy_cmd.c 2009-09-11 16:28:02.000000000 -0400
|
31
|
+
--- copy_cmd.c 2014-10-02 11:26:58.000000000 -0400
|
32
|
+
***************
|
33
|
+
|
34
|
+
case r_reading_until:
|
35
|
+
case r_deblank_reading_until:
|
36
|
+
! new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
|
37
|
+
/*FALLTHROUGH*/
|
38
|
+
case r_reading_string:
|
39
|
+
|
40
|
+
case r_reading_until:
|
41
|
+
case r_deblank_reading_until:
|
42
|
+
! new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0;
|
43
|
+
/*FALLTHROUGH*/
|
44
|
+
case r_reading_string:
|
@@ -0,0 +1,117 @@
|
|
1
|
+
BASH PATCH REPORT
|
2
|
+
=================
|
3
|
+
|
4
|
+
Bash-Release: 4.2
|
5
|
+
Patch-ID: bash42-053
|
6
|
+
|
7
|
+
Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx>
|
8
|
+
Bug-Reference-ID:
|
9
|
+
Bug-Reference-URL:
|
10
|
+
|
11
|
+
Bug-Description:
|
12
|
+
|
13
|
+
A combination of nested command substitutions and function importing from
|
14
|
+
the environment can cause bash to execute code appearing in the environment
|
15
|
+
variable value following the function definition.
|
16
|
+
|
17
|
+
Patch (apply with `patch -p0'):
|
18
|
+
|
19
|
+
*** ../bash-4.2.52/builtins/evalstring.c 2014-09-16 19:35:45.000000000 -0400
|
20
|
+
--- builtins/evalstring.c 2014-10-04 15:00:26.000000000 -0400
|
21
|
+
***************
|
22
|
+
|
23
|
+
struct fd_bitmap *bitmap;
|
24
|
+
|
25
|
+
! if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
|
26
|
+
{
|
27
|
+
! internal_warning ("%s: ignoring function definition attempt", from_file);
|
28
|
+
! should_jump_to_top_level = 0;
|
29
|
+
! last_result = last_command_exit_value = EX_BADUSAGE;
|
30
|
+
! break;
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
struct fd_bitmap *bitmap;
|
35
|
+
|
36
|
+
! if (flags & SEVAL_FUNCDEF)
|
37
|
+
{
|
38
|
+
! char *x;
|
39
|
+
!
|
40
|
+
! /* If the command parses to something other than a straight
|
41
|
+
! function definition, or if we have not consumed the entire
|
42
|
+
! string, or if the parser has transformed the function
|
43
|
+
! name (as parsing will if it begins or ends with shell
|
44
|
+
! whitespace, for example), reject the attempt */
|
45
|
+
! if (command->type != cm_function_def ||
|
46
|
+
! ((x = parser_remaining_input ()) && *x) ||
|
47
|
+
! (STREQ (from_file, command->value.Function_def->name->word) == 0))
|
48
|
+
! {
|
49
|
+
! internal_warning (_("%s: ignoring function definition attempt"), from_file);
|
50
|
+
! should_jump_to_top_level = 0;
|
51
|
+
! last_result = last_command_exit_value = EX_BADUSAGE;
|
52
|
+
! reset_parser ();
|
53
|
+
! break;
|
54
|
+
! }
|
55
|
+
}
|
56
|
+
|
57
|
+
***************
|
58
|
+
|
59
|
+
|
60
|
+
if (flags & SEVAL_ONECMD)
|
61
|
+
! break;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
|
66
|
+
if (flags & SEVAL_ONECMD)
|
67
|
+
! {
|
68
|
+
! reset_parser ();
|
69
|
+
! break;
|
70
|
+
! }
|
71
|
+
}
|
72
|
+
}
|
73
|
+
*** ../bash-4.2.52/parse.y 2014-09-30 19:24:19.000000000 -0400
|
74
|
+
--- parse.y 2014-10-04 15:00:26.000000000 -0400
|
75
|
+
***************
|
76
|
+
|
77
|
+
|
78
|
+
}
|
79
|
+
|
80
|
+
+ char *
|
81
|
+
+ parser_remaining_input ()
|
82
|
+
+ {
|
83
|
+
+ if (shell_input_line == 0)
|
84
|
+
+ return 0;
|
85
|
+
+ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
|
86
|
+
+ return '\0'; /* XXX */
|
87
|
+
+ return (shell_input_line + shell_input_line_index);
|
88
|
+
+ }
|
89
|
+
+
|
90
|
+
ifdef INCLUDE_UNUSED
|
91
|
+
/* Back the input pointer up by one, effectively `ungetting' a character. */
|
92
|
+
***************
|
93
|
+
|
94
|
+
/* reset_parser clears shell_input_line and associated variables */
|
95
|
+
restore_input_line_state (&ls);
|
96
|
+
! if (interactive)
|
97
|
+
! token_to_read = 0;
|
98
|
+
|
99
|
+
/* Need to find how many characters parse_and_execute consumed, update
|
100
|
+
|
101
|
+
/* reset_parser clears shell_input_line and associated variables */
|
102
|
+
restore_input_line_state (&ls);
|
103
|
+
!
|
104
|
+
! token_to_read = 0;
|
105
|
+
|
106
|
+
/* Need to find how many characters parse_and_execute consumed, update
|
107
|
+
*** ../bash-4.2.52/shell.h 2011-11-21 18:03:32.000000000 -0500
|
108
|
+
--- shell.h 2014-10-04 15:00:26.000000000 -0400
|
109
|
+
***************
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
/* Let's try declaring these here. */
|
114
|
+
+ extern char *parser_remaining_input __P((void));
|
115
|
+
+
|
116
|
+
extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
|
117
|
+
extern void restore_parser_state __P((sh_parser_state_t *));
|
@@ -0,0 +1,2 @@
|
|
1
|
+
~/.bash_logout
|
2
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
.bash_profile
|
2
|
+
|
3
|
+
Get the aliases and functions
|
4
|
+
if [ -f ~/.bashrc ]; then
|
5
|
+
. ~/.bashrc
|
6
|
+
fi
|
7
|
+
|
8
|
+
User specific environment and startup programs
|
9
|
+
|
10
|
+
PATH=$PATH:$HOME/.local/bin:$HOME/bin
|
11
|
+
|
12
|
+
export PATH
|
@@ -0,0 +1,11 @@
|
|
1
|
+
.bashrc
|
2
|
+
|
3
|
+
Source global definitions
|
4
|
+
if [ -f /etc/bashrc ]; then
|
5
|
+
. /etc/bashrc
|
6
|
+
fi
|
7
|
+
|
8
|
+
# Uncomment the following line if you don't like systemctl's auto-paging feature:
|
9
|
+
export SYSTEMD_PAGER=
|
10
|
+
|
11
|
+
User specific aliases and functions
|
@@ -0,0 +1,48 @@
|
|
1
|
+
From 0eb5e47f531b49c8d048c9ae9657eeb63f49a9f3 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Siteshwar Vashisht <svashisht@redhat.com>
|
3
|
+
Date: Fri, 13 May 2016 01:34:06 +0530
|
4
|
+
Subject: [PATCH] Fix shopt lastpipe mode crash
|
5
|
+
|
6
|
+
---
|
7
|
+
execute_cmd.c | 23 ++++++++++++++++++++---
|
8
|
+
1 file changed, 20 insertions(+), 3 deletions(-)
|
9
|
+
|
10
|
+
diff --git a/execute_cmd.c b/execute_cmd.c
|
11
|
+
index c5cf6d2..7b22460 100644
|
12
|
+
--- a/execute_cmd.c
|
13
|
+
+++ b/execute_cmd.c
|
14
|
+
@@ -2254,11 +2254,28 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
|
15
|
+
if (lastpipe_flag)
|
16
|
+
{
|
17
|
+
#if defined (JOB_CONTROL)
|
18
|
+
- append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
|
19
|
+
-#endif
|
20
|
+
+ if (INVALID_JOB (lastpipe_jid) == 0)
|
21
|
+
+ {
|
22
|
+
+ append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid);
|
23
|
+
+ lstdin = wait_for (lastpid);
|
24
|
+
+ }
|
25
|
+
+ else
|
26
|
+
+ lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */
|
27
|
+
+#else
|
28
|
+
lstdin = wait_for (lastpid);
|
29
|
+
+#endif
|
30
|
+
+
|
31
|
+
#if defined (JOB_CONTROL)
|
32
|
+
- exec_result = job_exit_status (lastpipe_jid);
|
33
|
+
+ /* If wait_for removes the job from the jobs table, use result of last
|
34
|
+
+ command as pipeline's exit status as usual. The jobs list can get
|
35
|
+
+ frozen and unfrozen at inconvenient times if there are multiple pipelines
|
36
|
+
+ running simultaneously. */
|
37
|
+
+ if (INVALID_JOB (lastpipe_jid) == 0)
|
38
|
+
+ exec_result = job_exit_status (lastpipe_jid);
|
39
|
+
+ else if (pipefail_opt)
|
40
|
+
+ exec_result = exec_result | lstdin; /* XXX */
|
41
|
+
+ /* otherwise we use exec_result */
|
42
|
+
+
|
43
|
+
#endif
|
44
|
+
unfreeze_jobs_list ();
|
45
|
+
}
|
46
|
+
--
|
47
|
+
2.5.5
|
48
|
+
|
@@ -0,0 +1,1772 @@
|
|
1
|
+
#% define beta_tag rc2
|
2
|
+
%define patchleveltag .46
|
3
|
+
%define baseversion 4.2
|
4
|
+
%bcond_without tests
|
5
|
+
|
6
|
+
Version: %{baseversion}%{patchleveltag}
|
7
|
+
Name: bash
|
8
|
+
Summary: The GNU Bourne Again shell
|
9
|
+
Release: 30%{?dist}
|
10
|
+
Group: System Environment/Shells
|
11
|
+
License: GPLv3+
|
12
|
+
Url: http://www.gnu.org/software/bash
|
13
|
+
Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{baseversion}.tar.gz
|
14
|
+
|
15
|
+
# For now there isn't any doc
|
16
|
+
#Source2: ftp://ftp.gnu.org/gnu/bash/bash-doc-%{version}.tar.gz
|
17
|
+
|
18
|
+
Source1: dot-bashrc
|
19
|
+
Source2: dot-bash_profile
|
20
|
+
Source3: dot-bash_logout
|
21
|
+
|
22
|
+
# Official upstream patches
|
23
|
+
Patch001: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-001
|
24
|
+
Patch002: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-002
|
25
|
+
Patch003: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-003
|
26
|
+
Patch004: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-004
|
27
|
+
Patch005: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-005
|
28
|
+
Patch006: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-006
|
29
|
+
Patch007: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-007
|
30
|
+
Patch008: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-008
|
31
|
+
Patch009: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-009
|
32
|
+
Patch010: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-010
|
33
|
+
Patch011: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-011
|
34
|
+
Patch012: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-012
|
35
|
+
Patch013: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-013
|
36
|
+
Patch014: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-014
|
37
|
+
Patch015: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-015
|
38
|
+
Patch016: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-016
|
39
|
+
Patch017: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-017
|
40
|
+
Patch018: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-018
|
41
|
+
Patch019: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-019
|
42
|
+
Patch020: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-020
|
43
|
+
Patch021: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-021
|
44
|
+
Patch022: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-022
|
45
|
+
Patch023: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-023
|
46
|
+
Patch024: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-024
|
47
|
+
Patch025: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-025
|
48
|
+
Patch026: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-026
|
49
|
+
Patch027: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-027
|
50
|
+
Patch028: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-028
|
51
|
+
Patch029: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-029
|
52
|
+
Patch030: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-030
|
53
|
+
Patch031: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-031
|
54
|
+
Patch032: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-032
|
55
|
+
Patch033: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-033
|
56
|
+
Patch034: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-034
|
57
|
+
Patch035: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-035
|
58
|
+
Patch036: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-036
|
59
|
+
Patch037: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-037
|
60
|
+
Patch038: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-038
|
61
|
+
Patch039: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-039
|
62
|
+
Patch040: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-040
|
63
|
+
Patch041: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-041
|
64
|
+
Patch042: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-042
|
65
|
+
Patch043: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-043
|
66
|
+
Patch044: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-044
|
67
|
+
Patch045: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-045
|
68
|
+
Patch046: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-046
|
69
|
+
#1175647 - shellshock related parser bugs
|
70
|
+
Patch052: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-052
|
71
|
+
Patch053: ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-053
|
72
|
+
|
73
|
+
# Other patches
|
74
|
+
Patch101: bash-2.02-security.patch
|
75
|
+
Patch102: bash-2.03-paths.patch
|
76
|
+
Patch103: bash-2.03-profile.patch
|
77
|
+
Patch104: bash-2.05a-interpreter.patch
|
78
|
+
Patch105: bash-2.05b-debuginfo.patch
|
79
|
+
Patch106: bash-2.05b-manso.patch
|
80
|
+
Patch107: bash-2.05b-pgrp_sync.patch
|
81
|
+
Patch108: bash-2.05b-readline-oom.patch
|
82
|
+
Patch109: bash-2.05b-xcc.patch
|
83
|
+
Patch110: bash-3.2-audit.patch
|
84
|
+
Patch111: bash-3.2-ssh_source_bash.patch
|
85
|
+
Patch112: bash-bashbug.patch
|
86
|
+
Patch113: bash-infotags.patch
|
87
|
+
Patch114: bash-requires.patch
|
88
|
+
Patch115: bash-setlocale.patch
|
89
|
+
Patch116: bash-tty-tests.patch
|
90
|
+
|
91
|
+
# 484809, check if interp section is NOBITS
|
92
|
+
Patch117: bash-4.0-nobits.patch
|
93
|
+
|
94
|
+
# Do the same CFLAGS in generated Makefile in examples
|
95
|
+
Patch118: bash-4.1-examples.patch
|
96
|
+
|
97
|
+
# Builtins like echo and printf won't report errors
|
98
|
+
# when output does not succeed due to EPIPE
|
99
|
+
Patch119: bash-4.1-broken_pipe.patch
|
100
|
+
|
101
|
+
# Enable system-wide .bash_logout for login shells
|
102
|
+
Patch120: bash-4.2-rc2-logout.patch
|
103
|
+
|
104
|
+
# Static analyzis shows some issues in bash-2.05a-interpreter.patch
|
105
|
+
Patch121: bash-4.2-coverity.patch
|
106
|
+
|
107
|
+
# Don't call malloc in signal handler
|
108
|
+
Patch122: bash-4.1-defer-sigchld-trap.patch
|
109
|
+
|
110
|
+
# 799958, updated info about trap
|
111
|
+
Patch123: bash-4.2-manpage_trap.patch
|
112
|
+
|
113
|
+
# 695656, block the signal and unblock it after the new handler is installed
|
114
|
+
Patch124: bash-4.2-signal.patch
|
115
|
+
|
116
|
+
# https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
|
117
|
+
Patch125: bash-4.2-size_type.patch
|
118
|
+
|
119
|
+
# 903833, Fix missing close(), fixes fd leaks
|
120
|
+
Patch126: bash-4.2-missing_closes.patch
|
121
|
+
Patch127: bash-4.1-trap.patch
|
122
|
+
|
123
|
+
# 1112709 - mention ulimit -c and -f POSIX block size
|
124
|
+
Patch128: bash-4.2-man-ulimit.patch
|
125
|
+
|
126
|
+
# 1116301 - inhibit brace expansion in some cases
|
127
|
+
Patch129: bash-4.2-brace-expand.patch
|
128
|
+
|
129
|
+
# 1102813 - fix bash visual mode
|
130
|
+
Patch130: bash-4.2-noecho.patch
|
131
|
+
|
132
|
+
# 1126370 - provide a better description for some bash builtins
|
133
|
+
Patch131: bash-4.2-manpage.patch
|
134
|
+
|
135
|
+
# 1126396 - prevent bash from hanging with certain history settings
|
136
|
+
Patch132: bash-4.2-history-hang.patch
|
137
|
+
|
138
|
+
# 1126401 - properly document extglob behaviour
|
139
|
+
Patch133: bash-4.2-extglob-man.patch
|
140
|
+
|
141
|
+
# 1141648 - properly document extglob behaviour
|
142
|
+
Patch134: bash-4.2-env-inject.patch
|
143
|
+
|
144
|
+
# 1146324 - cve-2014-7169
|
145
|
+
|
146
|
+
Patch135: bash-4.2-cve-2014-7169-0.patch
|
147
|
+
Patch136: bash-4.2-cve-2014-7169-1.patch
|
148
|
+
Patch137: bash-4.2-cve-2014-7169-2.patch
|
149
|
+
|
150
|
+
#1172214 - Bash leaks memory when doing a pattern-substitution
|
151
|
+
Patch138: bash-4.2-double-alloc.patch
|
152
|
+
|
153
|
+
#1196566 - IFS incorrectly splitting herestrings
|
154
|
+
Patch139: bash-4.2-ifs-in-temp-env.patch
|
155
|
+
|
156
|
+
#1165793
|
157
|
+
Patch140: bash-4.2-check-debugger.patch
|
158
|
+
|
159
|
+
#1212775
|
160
|
+
Patch141: bash-4.2-case-in-command-subst.patch
|
161
|
+
|
162
|
+
#1237213 - export when fnname contains hyphens
|
163
|
+
Patch142: bash-4.2-enable-hyphened-fn-export.patch
|
164
|
+
|
165
|
+
#1326302
|
166
|
+
Patch143: fix-shopt-lastpipe-mode-crash.patch
|
167
|
+
|
168
|
+
#1372806
|
169
|
+
Patch144: bash-4.3-trapped-signals.patch
|
170
|
+
|
171
|
+
#1403255
|
172
|
+
Patch145: bash-4.4-param-expansion.patch
|
173
|
+
|
174
|
+
#1377496
|
175
|
+
Patch146: bash-4.4-pipeline-pgrp.patch
|
176
|
+
|
177
|
+
#1267478
|
178
|
+
Patch147: bash-4.2-missing-opt-cd.patch
|
179
|
+
|
180
|
+
#1264101 - Plug a leak related to compound assignments
|
181
|
+
Patch148: bash-4.2-leak-compound.patch
|
182
|
+
|
183
|
+
#1379237
|
184
|
+
Patch149: bash-4.3-cve-2016-0634.patch
|
185
|
+
|
186
|
+
#1426026
|
187
|
+
Patch150: bash-4.3-cve-2016-7543.patch
|
188
|
+
|
189
|
+
#1429838
|
190
|
+
Patch151: bash-cve-2016-9401.patch
|
191
|
+
|
192
|
+
#1473245
|
193
|
+
Patch152: bash-4.3-pipefd-leak.patch
|
194
|
+
|
195
|
+
#1487615 - bash fails to execute commands containing multibyte characters
|
196
|
+
Patch153: bash-4.3-wshouldquote.patch
|
197
|
+
|
198
|
+
BuildRequires: texinfo bison
|
199
|
+
BuildRequires: ncurses-devel
|
200
|
+
BuildRequires: autoconf, gettext
|
201
|
+
Conflicts: filesystem < 3
|
202
|
+
Provides: /bin/sh
|
203
|
+
Provides: /bin/bash
|
204
|
+
|
205
|
+
%description
|
206
|
+
The GNU Bourne Again shell (Bash) is a shell or command language
|
207
|
+
interpreter that is compatible with the Bourne shell (sh). Bash
|
208
|
+
incorporates useful features from the Korn shell (ksh) and the C shell
|
209
|
+
(csh). Most sh scripts can be run by bash without modification.
|
210
|
+
|
211
|
+
%package doc
|
212
|
+
Summary: Documentation files for %{name}
|
213
|
+
Group: Development/Languages
|
214
|
+
Requires: %{name} = %{version}-%{release}
|
215
|
+
|
216
|
+
%description doc
|
217
|
+
This package contains documentation files for %{name}.
|
218
|
+
|
219
|
+
%define pkgdocdir %{_datadir}/doc/%{name}-%{version}
|
220
|
+
|
221
|
+
%prep
|
222
|
+
#%setup -q -a 2
|
223
|
+
%setup -q -n %{name}-%{baseversion}
|
224
|
+
|
225
|
+
# Official upstream patches
|
226
|
+
%patch001 -p0 -b .001
|
227
|
+
%patch002 -p0 -b .002
|
228
|
+
%patch003 -p0 -b .003
|
229
|
+
%patch004 -p0 -b .004
|
230
|
+
%patch005 -p0 -b .005
|
231
|
+
%patch006 -p0 -b .006
|
232
|
+
%patch007 -p0 -b .007
|
233
|
+
%patch008 -p0 -b .008
|
234
|
+
%patch009 -p0 -b .009
|
235
|
+
%patch010 -p0 -b .010
|
236
|
+
%patch011 -p0 -b .011
|
237
|
+
%patch012 -p0 -b .012
|
238
|
+
%patch013 -p0 -b .013
|
239
|
+
%patch014 -p0 -b .014
|
240
|
+
%patch015 -p0 -b .015
|
241
|
+
%patch016 -p0 -b .016
|
242
|
+
%patch017 -p0 -b .017
|
243
|
+
%patch018 -p0 -b .018
|
244
|
+
%patch019 -p0 -b .019
|
245
|
+
%patch020 -p0 -b .020
|
246
|
+
%patch021 -p0 -b .021
|
247
|
+
%patch022 -p0 -b .022
|
248
|
+
%patch023 -p0 -b .023
|
249
|
+
%patch024 -p0 -b .024
|
250
|
+
%patch025 -p0 -b .025
|
251
|
+
%patch026 -p0 -b .026
|
252
|
+
%patch027 -p0 -b .027
|
253
|
+
%patch028 -p0 -b .028
|
254
|
+
%patch029 -p0 -b .029
|
255
|
+
%patch030 -p0 -b .030
|
256
|
+
%patch031 -p0 -b .031
|
257
|
+
%patch032 -p0 -b .032
|
258
|
+
%patch033 -p0 -b .033
|
259
|
+
%patch034 -p0 -b .034
|
260
|
+
%patch035 -p0 -b .035
|
261
|
+
%patch036 -p0 -b .036
|
262
|
+
%patch037 -p0 -b .037
|
263
|
+
%patch038 -p0 -b .038
|
264
|
+
%patch039 -p0 -b .039
|
265
|
+
%patch040 -p0 -b .040
|
266
|
+
%patch041 -p0 -b .041
|
267
|
+
%patch042 -p0 -b .042
|
268
|
+
%patch043 -p0 -b .043
|
269
|
+
%patch044 -p0 -b .044
|
270
|
+
%patch045 -p0 -b .045
|
271
|
+
%patch046 -p0 -b .046
|
272
|
+
|
273
|
+
# Other patches
|
274
|
+
%patch101 -p1 -b .security
|
275
|
+
%patch102 -p1 -b .paths
|
276
|
+
%patch103 -p1 -b .profile
|
277
|
+
%patch104 -p1 -b .interpreter
|
278
|
+
%patch105 -p1 -b .debuginfo
|
279
|
+
%patch106 -p1 -b .manso
|
280
|
+
%patch107 -p1 -b .pgrp_sync
|
281
|
+
%patch108 -p1 -b .readline_oom
|
282
|
+
%patch109 -p1 -b .xcc
|
283
|
+
%patch110 -p1 -b .audit
|
284
|
+
%patch111 -p1 -b .ssh_source_bash
|
285
|
+
%patch112 -p1 -b .bashbug
|
286
|
+
%patch113 -p1 -b .infotags
|
287
|
+
%patch114 -p1 -b .requires
|
288
|
+
%patch115 -p1 -b .setlocale
|
289
|
+
%patch116 -p1 -b .tty_tests
|
290
|
+
%patch117 -p1 -b .nobits
|
291
|
+
%patch118 -p1 -b .examples
|
292
|
+
%patch119 -p1 -b .broken_pipe
|
293
|
+
%patch120 -p1 -b .logout
|
294
|
+
%patch121 -p1 -b .coverity
|
295
|
+
%patch122 -p1 -b .defer_sigchld_trap
|
296
|
+
%patch123 -p1
|
297
|
+
%patch124 -p1 -b .signal
|
298
|
+
%patch125 -p1 -b .size_type
|
299
|
+
%patch126 -p1 -b .missing_closes
|
300
|
+
%patch127 -p1 -b .trap
|
301
|
+
%patch128 -p1 -b .ulimit
|
302
|
+
%patch129 -p1 -b .expand
|
303
|
+
%patch130 -p1 -b .noecho
|
304
|
+
%patch131 -p1 -b .manpage
|
305
|
+
%patch132 -p1 -b .hang
|
306
|
+
%patch133 -p1 -b .man
|
307
|
+
%patch134 -p0 -b .inject
|
308
|
+
%patch135 -p0 -b .7169-0
|
309
|
+
%patch136 -p0 -b .7169-1
|
310
|
+
%patch137 -p0 -b .7169-2
|
311
|
+
%patch052 -p0 -b .052
|
312
|
+
%patch053 -p0 -b .053
|
313
|
+
%patch138 -p1 -b .double-alloc
|
314
|
+
%patch139 -p1 -b .temp-env
|
315
|
+
%patch140 -p1 -b .check-debugger
|
316
|
+
%patch141 -p1 -b .command-subst
|
317
|
+
%patch142 -p0 -b .export
|
318
|
+
%patch143 -p1 -b .fix-shopt-lastpipe-mode
|
319
|
+
%patch144 -p1 -b .trapped-signals
|
320
|
+
%patch145 -p1 -b .param-expansion
|
321
|
+
%patch146 -p1 -b .pipeline-pgrp
|
322
|
+
%patch147 -p1 -b .cd-e
|
323
|
+
%patch148 -p1 -b .leak-compound
|
324
|
+
%patch149 -p1 -b .cve-2016-0634
|
325
|
+
%patch150 -p1 -b .cve-2016-7543
|
326
|
+
%patch151 -p1 -b .cve-2016-9401
|
327
|
+
%patch152 -p1 -b .pipefd-leak
|
328
|
+
%patch153 -p1 -b .wshouldquote
|
329
|
+
|
330
|
+
echo %{version} > _distribution
|
331
|
+
echo %{release} > _patchlevel
|
332
|
+
|
333
|
+
%build
|
334
|
+
autoconf
|
335
|
+
%configure --with-bash-malloc=no --with-afs
|
336
|
+
|
337
|
+
# Recycles pids is neccessary. When bash's last fork's pid was X
|
338
|
+
# and new fork's pid is also X, bash has to wait for this same pid.
|
339
|
+
# Without Recycles pids bash will not wait.
|
340
|
+
make "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' `getconf LFS_CFLAGS`"
|
341
|
+
|
342
|
+
%install
|
343
|
+
rm -rf $RPM_BUILD_ROOT
|
344
|
+
|
345
|
+
if [ -e autoconf ]; then
|
346
|
+
# Yuck. We're using autoconf 2.1x.
|
347
|
+
export PATH=.:$PATH
|
348
|
+
fi
|
349
|
+
|
350
|
+
# Fix bug #83776
|
351
|
+
perl -pi -e 's,bashref\.info,bash.info,' doc/bashref.info
|
352
|
+
|
353
|
+
make DESTDIR=$RPM_BUILD_ROOT install
|
354
|
+
|
355
|
+
mkdir -p $RPM_BUILD_ROOT/etc
|
356
|
+
|
357
|
+
# make manpages for bash builtins as per suggestion in DOC/README
|
358
|
+
pushd doc
|
359
|
+
sed -e '
|
360
|
+
/^\.SH NAME/, /\\- bash built-in commands, see \\fBbash\\fR(1)$/{
|
361
|
+
/^\.SH NAME/d
|
362
|
+
s/^bash, //
|
363
|
+
s/\\- bash built-in commands, see \\fBbash\\fR(1)$//
|
364
|
+
s/,//g
|
365
|
+
b
|
366
|
+
}
|
367
|
+
d
|
368
|
+
' builtins.1 > man.pages
|
369
|
+
for i in echo pwd test kill; do
|
370
|
+
perl -pi -e "s,$i,,g" man.pages
|
371
|
+
perl -pi -e "s, , ,g" man.pages
|
372
|
+
done
|
373
|
+
|
374
|
+
install -c -m 644 builtins.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/builtins.1
|
375
|
+
|
376
|
+
for i in `cat man.pages` ; do
|
377
|
+
echo .so man1/builtins.1 > ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
|
378
|
+
chmod 0644 ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
|
379
|
+
done
|
380
|
+
popd
|
381
|
+
|
382
|
+
# Link bash man page to sh so that man sh works.
|
383
|
+
ln -s bash.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/sh.1
|
384
|
+
|
385
|
+
# Not for printf, true and false (conflict with coreutils)
|
386
|
+
rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/printf.1
|
387
|
+
rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/true.1
|
388
|
+
rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/false.1
|
389
|
+
|
390
|
+
ln -sf bash $RPM_BUILD_ROOT%{_bindir}/sh
|
391
|
+
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
|
392
|
+
mkdir -p $RPM_BUILD_ROOT/etc/skel
|
393
|
+
install -c -m644 %SOURCE1 $RPM_BUILD_ROOT/etc/skel/.bashrc
|
394
|
+
install -c -m644 %SOURCE2 $RPM_BUILD_ROOT/etc/skel/.bash_profile
|
395
|
+
install -c -m644 %SOURCE3 $RPM_BUILD_ROOT/etc/skel/.bash_logout
|
396
|
+
LONG_BIT=$(getconf LONG_BIT)
|
397
|
+
mv $RPM_BUILD_ROOT%{_bindir}/bashbug \
|
398
|
+
$RPM_BUILD_ROOT%{_bindir}/bashbug-"${LONG_BIT}"
|
399
|
+
ln -s bashbug-"${LONG_BIT}" $RPM_BUILD_ROOT%{_bindir}/bashbug
|
400
|
+
ln -s bashbug.1 $RPM_BUILD_ROOT/%{_mandir}/man1/bashbug-"$LONG_BIT".1
|
401
|
+
|
402
|
+
# Fix missing sh-bangs in example scripts (bug #225609).
|
403
|
+
for script in \
|
404
|
+
examples/scripts/krand.bash \
|
405
|
+
examples/scripts/bcsh.sh \
|
406
|
+
examples/scripts/precedence \
|
407
|
+
examples/scripts/shprompt
|
408
|
+
do
|
409
|
+
cp "$script" "$script"-orig
|
410
|
+
echo '#!/bin/bash' > "$script"
|
411
|
+
cat "$script"-orig >> "$script"
|
412
|
+
rm -f "$script"-orig
|
413
|
+
done
|
414
|
+
|
415
|
+
# bug #820192, need to add execable alternatives for regular built-ins
|
416
|
+
for ea in alias bg cd command fc fg getopts jobs read umask unalias wait
|
417
|
+
do
|
418
|
+
cat <<EOF > "$RPM_BUILD_ROOT"/%{_bindir}/"$ea"
|
419
|
+
#!/bin/sh
|
420
|
+
builtin $ea "\$@"
|
421
|
+
EOF
|
422
|
+
chmod +x "$RPM_BUILD_ROOT"/%{_bindir}/"$ea"
|
423
|
+
done
|
424
|
+
|
425
|
+
%find_lang %{name}
|
426
|
+
|
427
|
+
# copy doc to /usr/share/doc
|
428
|
+
cat /dev/null > %{name}-doc.files
|
429
|
+
mkdir -p $RPM_BUILD_ROOT/%{pkgdocdir}/doc
|
430
|
+
cp -p COPYING $RPM_BUILD_ROOT/%{pkgdocdir}
|
431
|
+
# loadables aren't buildable
|
432
|
+
rm -rf examples/loadables
|
433
|
+
for file in CHANGES COMPAT NEWS NOTES POSIX examples\
|
434
|
+
doc/{FAQ,INTRO,rose94.pdf,article.{pdf,txt},bashref.{html,pdf}}
|
435
|
+
do
|
436
|
+
cp -rp "$file" $RPM_BUILD_ROOT/%{pkgdocdir}/"$file"
|
437
|
+
echo "%%doc %{pkgdocdir}/$file" >> %{name}-doc.files
|
438
|
+
done
|
439
|
+
echo "%%doc %{pkgdocdir}/doc" >> %{name}-doc.files
|
440
|
+
|
441
|
+
|
442
|
+
%if %{with tests}
|
443
|
+
%check
|
444
|
+
make check
|
445
|
+
%endif
|
446
|
+
|
447
|
+
%clean
|
448
|
+
rm -rf $RPM_BUILD_ROOT
|
449
|
+
|
450
|
+
# ***** bash doesn't use install-info. It's always listed in %{_infodir}/dir
|
451
|
+
# to prevent prereq loops
|
452
|
+
|
453
|
+
# post is in lua so that we can run it without any external deps. Helps
|
454
|
+
# for bootstrapping a new install.
|
455
|
+
# Jesse Keating 2009-01-29 (code from Ignacio Vazquez-Abrams)
|
456
|
+
# Roman Rakus 2011-11-07 (code from Sergey Romanov) #740611
|
457
|
+
%post -p <lua>
|
458
|
+
nl = '\n'
|
459
|
+
sh = '/bin/sh'..nl
|
460
|
+
bash = '/bin/bash'..nl
|
461
|
+
f = io.open('/etc/shells', 'a+')
|
462
|
+
if f then
|
463
|
+
local shells = nl..f:read('*all')..nl
|
464
|
+
if not shells:find(nl..sh) then f:write(sh) end
|
465
|
+
if not shells:find(nl..bash) then f:write(bash) end
|
466
|
+
f:close()
|
467
|
+
end
|
468
|
+
|
469
|
+
%postun -p <lua>
|
470
|
+
-- Run it only if we are uninstalling
|
471
|
+
if arg[2] == "0"
|
472
|
+
then
|
473
|
+
t={}
|
474
|
+
for line in io.lines("/etc/shells")
|
475
|
+
do
|
476
|
+
if line ~= "/bin/bash" and line ~= "/bin/sh"
|
477
|
+
then
|
478
|
+
table.insert(t,line)
|
479
|
+
end
|
480
|
+
end
|
481
|
+
|
482
|
+
f = io.open("/etc/shells", "w+")
|
483
|
+
for n,line in pairs(t)
|
484
|
+
do
|
485
|
+
f:write(line.."\n")
|
486
|
+
end
|
487
|
+
f:close()
|
488
|
+
end
|
489
|
+
|
490
|
+
%files -f %{name}.lang
|
491
|
+
%defattr(-,root,root)
|
492
|
+
%config(noreplace) /etc/skel/.b*
|
493
|
+
%{_bindir}/sh
|
494
|
+
%{_bindir}/bash
|
495
|
+
%{_bindir}/alias
|
496
|
+
%{_bindir}/bg
|
497
|
+
%{_bindir}/cd
|
498
|
+
%{_bindir}/command
|
499
|
+
%{_bindir}/fc
|
500
|
+
%{_bindir}/fg
|
501
|
+
%{_bindir}/getopts
|
502
|
+
%{_bindir}/jobs
|
503
|
+
%{_bindir}/read
|
504
|
+
%{_bindir}/umask
|
505
|
+
%{_bindir}/unalias
|
506
|
+
%{_bindir}/wait
|
507
|
+
%dir %{pkgdocdir}/
|
508
|
+
%doc %{pkgdocdir}/COPYING
|
509
|
+
%attr(0755,root,root) %{_bindir}/bashbug*
|
510
|
+
%{_infodir}/bash.info*
|
511
|
+
%{_mandir}/*/*
|
512
|
+
%{_mandir}/*/..1*
|
513
|
+
|
514
|
+
%files doc -f %{name}-doc.files
|
515
|
+
%defattr(-, root, root)
|
516
|
+
|
517
|
+
# For now there isn't any doc
|
518
|
+
#%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
519
|
+
|
520
|
+
%changelog
|
521
|
+
* Mon Sep 25 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-30
|
522
|
+
- Check for multibyte characters in commands
|
523
|
+
Resolves: #1487615
|
524
|
+
|
525
|
+
* Thu Aug 03 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-29
|
526
|
+
- Fix a pipe fd leak in process substitution
|
527
|
+
Resolves: #1473245
|
528
|
+
|
529
|
+
* Tue Mar 07 2017 Kamil Dudka <kdudka@redhat.com - 4.2.46-28
|
530
|
+
- CVE-2016-9401 - Fix crash when '-' is passed as second sign to popd
|
531
|
+
Resolves: #1429838
|
532
|
+
|
533
|
+
* Fri Feb 24 2017 Kamil Dudka <kdudka@redhat.com - 4.2.46-27
|
534
|
+
- CVE-2016-7543: Fix for arbitrary code execution via SHELLOPTS+PS4 variables
|
535
|
+
Resolves: #1426026
|
536
|
+
|
537
|
+
* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-26
|
538
|
+
- CVE-2016-0634: Fix for arbitrary code execution via malicious hostname
|
539
|
+
Resolves: #1379237
|
540
|
+
|
541
|
+
* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-25
|
542
|
+
- Plug a leak related to compound assignments
|
543
|
+
Resolves: #1264101
|
544
|
+
|
545
|
+
* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-24
|
546
|
+
- Recognize cd -e
|
547
|
+
Resolves: #1267478
|
548
|
+
|
549
|
+
* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-23
|
550
|
+
- Add a condition before setting pipeline_pgrp to shell_pgrp
|
551
|
+
Resolves: #1377496
|
552
|
+
|
553
|
+
* Thu Feb 09 2017 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-22
|
554
|
+
- Avoid crash in parameter expansion while expanding long strings
|
555
|
+
Resolves: #1403255
|
556
|
+
|
557
|
+
* Wed Oct 12 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-21
|
558
|
+
- Fix a crash in trap signal handling
|
559
|
+
Resolves: #1372806
|
560
|
+
|
561
|
+
* Tue Jul 12 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.2.46-20
|
562
|
+
- Fix a crash when lastpipe mode is enabled
|
563
|
+
Resolves: #1326302
|
564
|
+
|
565
|
+
* Wed Jul 08 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-19
|
566
|
+
- Add a necessary declaration to common.h
|
567
|
+
Related: #1165793
|
568
|
+
|
569
|
+
* Tue Jul 07 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-18
|
570
|
+
- Allow importing exported functions with hyphens
|
571
|
+
Resolves: #1237213
|
572
|
+
|
573
|
+
* Mon May 18 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-17
|
574
|
+
- Make sure a case statement works in command subst
|
575
|
+
Resolves: #1212775
|
576
|
+
|
577
|
+
* Fri May 15 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-16
|
578
|
+
- Emit warning when --debugger option is used and no debugger is installed
|
579
|
+
Resolves: #1165793
|
580
|
+
|
581
|
+
* Thu May 14 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-15
|
582
|
+
- Add a CI configfile
|
583
|
+
Related: #1165793
|
584
|
+
|
585
|
+
* Mon Apr 27 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-14
|
586
|
+
- IFS incorrectly splitting herestrings
|
587
|
+
Resolves: #1196566
|
588
|
+
|
589
|
+
* Mon Apr 27 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-13
|
590
|
+
- PatternSub code allocates twice
|
591
|
+
Resolves: #1172214
|
592
|
+
|
593
|
+
* Sun Jan 11 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-12
|
594
|
+
- Shellshock related parser bugs - patches
|
595
|
+
Related: #1175647
|
596
|
+
|
597
|
+
* Thu Jan 08 2015 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-11
|
598
|
+
- Shellshock related parser bugs (actually upstream patches 52 and 53)
|
599
|
+
Resolves: #1175647
|
600
|
+
|
601
|
+
* Fri Sep 26 2014 Michal Hlavinka <mhlavink@redhat.com> - 4.2.46-10
|
602
|
+
- CVE-2014-7169
|
603
|
+
Resolves: #1146325
|
604
|
+
- amend #1146324 patch to match upstream's
|
605
|
+
|
606
|
+
* Mon Sep 15 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-9
|
607
|
+
- fix-up the patch
|
608
|
+
Related: #1141648
|
609
|
+
|
610
|
+
* Mon Sep 15 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-8
|
611
|
+
- check for fishy environment
|
612
|
+
Resolves: #1141648
|
613
|
+
|
614
|
+
* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-7
|
615
|
+
- Properly document extglob behaviour
|
616
|
+
Resolves: #1126401
|
617
|
+
|
618
|
+
* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-6
|
619
|
+
- Prevent bash from hanging with certain history settings
|
620
|
+
Resolves: #1126396
|
621
|
+
|
622
|
+
* Mon Aug 04 2014 Ondrej Oprala <ooprala@redhat.com> - 4.2.46-5
|
623
|
+
- Document continue, break and suspend
|
624
|
+
Resolves: #1126370
|
625
|
+
|
626
|
+
* Wed Jul 24 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-4
|
627
|
+
- Fix bash visual mode
|
628
|
+
Resolves: #1102813
|
629
|
+
|
630
|
+
* Tue Jul 22 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-3
|
631
|
+
- Inhibit brace expansion in some cases
|
632
|
+
Resolves: #1116301
|
633
|
+
|
634
|
+
* Mon Jul 21 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-2
|
635
|
+
- Mention ulimit -c and -f block size in POSIX mode
|
636
|
+
Resolves: #1112709
|
637
|
+
|
638
|
+
* Thu Jun 18 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.46-1
|
639
|
+
- Patchlevel 46
|
640
|
+
Resolves: #1073683
|
641
|
+
|
642
|
+
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 4.2.45-5
|
643
|
+
- Mass rebuild 2014-01-24
|
644
|
+
|
645
|
+
* Fri Jan 24 2014 Ondrej Oprala <ooprala@redhat.com - 4.2.45-4
|
646
|
+
- Backport a patch from #964687 (resolves #1034915)
|
647
|
+
|
648
|
+
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 4.2.45-3
|
649
|
+
- Mass rebuild 2013-12-27
|
650
|
+
|
651
|
+
* Fri Aug 09 2013 Roman Rakus <rrakus@redhat.com> - 4.2.45-2
|
652
|
+
- Added suggestion to .bashrc how to disable autopaging in systemctl
|
653
|
+
Resolves: #978841
|
654
|
+
|
655
|
+
* Mon Mar 11 2013 Roman Rakus <rrakus@redhat.com> - 4.2.45-1
|
656
|
+
- Patchlevel 45
|
657
|
+
|
658
|
+
* Thu Jan 31 2013 Roman Rakus <rrakus@redhat.com> - 4.2.42-3
|
659
|
+
- Fix usage of partial unitialized structure
|
660
|
+
Resolves: #857948
|
661
|
+
|
662
|
+
* Thu Jan 31 2013 Roman Rakus <rrakus@redhat.com> - 4.2.42-2
|
663
|
+
- Fix fd leaks
|
664
|
+
Resolves: #903833
|
665
|
+
|
666
|
+
* Thu Jan 03 2013 Roman Rakus <rrakus@redhat.com> - 4.2.42-1
|
667
|
+
- Patchlevel 42
|
668
|
+
|
669
|
+
* Thu Nov 29 2012 Roman Rakus <rrakus@redhat.com> - 4.2.39-3
|
670
|
+
- Use unsigned type for size
|
671
|
+
|
672
|
+
* Tue Nov 27 2012 Roman Rakus <rrakus@redhat.com> - 4.2.39-2
|
673
|
+
- Create bashbug symlink
|
674
|
+
|
675
|
+
* Fri Nov 02 2012 Roman Rakus <rrakus@redhat.com> - 4.2.39-1
|
676
|
+
- Patchlevel 39
|
677
|
+
|
678
|
+
* Tue Aug 28 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-8
|
679
|
+
- Fix a comments in rpm changelog
|
680
|
+
|
681
|
+
* Tue Aug 28 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-7
|
682
|
+
- Update info about trap in man page
|
683
|
+
Resolves: #799958
|
684
|
+
- instead of setting the signal handler to SIG_IGN while installing
|
685
|
+
the new trap handler, block the signal and unblock it after the new handler
|
686
|
+
is installed
|
687
|
+
Resolves: #695656
|
688
|
+
|
689
|
+
* Wed Aug 22 2012 Ondrej Oprala <ooprala@redhat.com> - 4.2.37-6
|
690
|
+
- Revert revision 4.2.37-5 - already fixed upstream
|
691
|
+
|
692
|
+
* Tue Aug 21 2012 Ondrej Oprala <ooprala@redhat.com> - 4.2.37-5
|
693
|
+
- Don't filter out environmental variables with
|
694
|
+
a dot in the name
|
695
|
+
Resolves: #819995
|
696
|
+
|
697
|
+
* Wed Aug 08 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-4
|
698
|
+
- Added doc subdir to bash-doc ownership list
|
699
|
+
Resolves: #846734
|
700
|
+
|
701
|
+
* Tue Jul 24 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-3
|
702
|
+
- Increment patchlevel tag
|
703
|
+
|
704
|
+
* Tue Jul 24 2012 Roman Rakus <rrakus@redhat.com> - 4.2.36-3
|
705
|
+
- Patchlevel 37
|
706
|
+
|
707
|
+
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2.36-2
|
708
|
+
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
709
|
+
|
710
|
+
* Tue Jul 10 2012 Roman Rakus <rrakus@redhat.com> - 4.2.36-1
|
711
|
+
- Patchlevel 36
|
712
|
+
|
713
|
+
* Sat Jun 23 2012 Roman Rakus <rrakus@redhat.com> - 4.2.29-3
|
714
|
+
- Remove /bin from DEFAULT_PATH_VALUE
|
715
|
+
Resolves: #834571
|
716
|
+
|
717
|
+
* Thu May 31 2012 Roman Rakus <rrakus@redhat.com> - 4.2.29-2
|
718
|
+
- Patchlevel 29
|
719
|
+
- Also keep release at -2, so we are newer then f16 and f17
|
720
|
+
|
721
|
+
* Tue May 29 2012 Roman Rakus <rrakus@redhat.com> - 4.2.28-2
|
722
|
+
- Provide exec-able alternatives to some builtins
|
723
|
+
Resolves #820192
|
724
|
+
|
725
|
+
* Wed May 09 2012 Roman Rakus <rrakus@redhat.com> - 4.2.28-1
|
726
|
+
- Patchlevel 28
|
727
|
+
|
728
|
+
* Mon Apr 23 2012 Roman Rakus <rrakus@redhat.com> - 4.2.24-2
|
729
|
+
- Don't call malloc in signal handler
|
730
|
+
|
731
|
+
* Tue Mar 13 2012 Roman Rakus <rrakus@redhat.com> - 4.2.24-1
|
732
|
+
- Patchlevel 24
|
733
|
+
|
734
|
+
* Wed Jan 25 2012 Harald Hoyer <harald@redhat.com> 4.2.20-4
|
735
|
+
- install everything in /usr
|
736
|
+
https://fedoraproject.org/wiki/Features/UsrMove
|
737
|
+
|
738
|
+
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2.20-3
|
739
|
+
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
740
|
+
|
741
|
+
* Thu Nov 24 2011 Roman Rakus <rrakus@redhat.com> - 4.2.20-2
|
742
|
+
- Add missing f:close() in postun
|
743
|
+
- Patchlevel 20
|
744
|
+
|
745
|
+
* Thu Nov 10 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-7
|
746
|
+
- erase /bin/bash and /bin/sh in postun only if we are uninstalling (#752827)
|
747
|
+
|
748
|
+
* Mon Nov 07 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-6
|
749
|
+
- Simplified lua post script (#740611)
|
750
|
+
|
751
|
+
* Fri Jul 29 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-5
|
752
|
+
- Clean up unneeded bash-doc files (Ville Skyttä) (#721116)
|
753
|
+
|
754
|
+
* Wed Jun 22 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-4
|
755
|
+
- Don't crash when use `read' with associative array (#715050)
|
756
|
+
|
757
|
+
* Tue Jun 07 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-3
|
758
|
+
- Added $HOME/.local/bin to PATH in .bash_profile (#699812)
|
759
|
+
|
760
|
+
* Thu May 05 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-2
|
761
|
+
- Inc. a release no.
|
762
|
+
|
763
|
+
* Thu May 05 2011 Roman Rakus <rrakus@redhat.com> - 4.2.10-1
|
764
|
+
- Patchlevel 10
|
765
|
+
|
766
|
+
* Thu Mar 31 2011 Roman Rakus <rrakus@redhat.com> - 4.2.8-2
|
767
|
+
- Remove bash-4.2-xdupmbstowcs2-patch, which introduced another bugs
|
768
|
+
|
769
|
+
* Tue Mar 15 2011 Roman Rakus <rrakus@redhat.com> - 4.2.8-1
|
770
|
+
- Patchlevel 8
|
771
|
+
|
772
|
+
* Tue Mar 15 2011 Roman Rakus <rrakus@redhat.com> - 4.2.7-3
|
773
|
+
- #684293, fix the infinite loop with invalid wide char
|
774
|
+
|
775
|
+
* Mon Mar 14 2011 Roman Rakus <rrakus@redhat.com> - 4.2.7-2
|
776
|
+
- Use lua script in postun
|
777
|
+
|
778
|
+
* Mon Mar 07 2011 Roman Rakus <rrakus@redhat.com> - 4.2.7-1
|
779
|
+
- Patchlevel 7
|
780
|
+
|
781
|
+
* Wed Mar 02 2011 Roman Rakus <rrakus@redhat.com> - 4.2.6-1
|
782
|
+
- Patchlevel 6
|
783
|
+
|
784
|
+
* Tue Mar 01 2011 Roman Rakus <rrakus@redhat.com> - 4.2.5-1
|
785
|
+
- Patchlevel 5
|
786
|
+
- Static analyzis show some issues in some patches
|
787
|
+
- Some cleanup
|
788
|
+
|
789
|
+
* Wed Feb 16 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-2
|
790
|
+
- pattern matching glitch, patch from upstream
|
791
|
+
|
792
|
+
* Wed Feb 16 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-1
|
793
|
+
- Release bash-4.2
|
794
|
+
|
795
|
+
* Mon Feb 14 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-0.2.rc2
|
796
|
+
- Enable system-wide .bash_logout for login shells
|
797
|
+
|
798
|
+
* Wed Feb 09 2011 Roman Rakus <rrakus@redhat.com> - 4.2.0-0.1.rc2
|
799
|
+
- Update to bash-4.2-rc2
|
800
|
+
|
801
|
+
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.9-6
|
802
|
+
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
803
|
+
|
804
|
+
* Thu Jan 06 2011 Roman Rakus <rrakus@redhat.com> - 4.1.9-5
|
805
|
+
- Builtins like echo and printf won't report errors
|
806
|
+
when output does not succeed due to EPIPE
|
807
|
+
|
808
|
+
* Thu Dec 16 2010 Roman Rakus <rrakus@redhat.com> - 4.1.9-4
|
809
|
+
- Drop doc/examples/loadables
|
810
|
+
|
811
|
+
* Wed Dec 01 2010 Roman Rakus <rrakus@redhat.com> - 4.1.9-3
|
812
|
+
- don't segfault when trying to bind int variable to array
|
813
|
+
with bad array subsrcipt
|
814
|
+
Resolves: #618289
|
815
|
+
|
816
|
+
* Fri Oct 15 2010 Ville Skyttä <ville.skytta@iki.fi> - 4.1.9-2
|
817
|
+
- Move doc dir ownership to main package.
|
818
|
+
- Preserve doc timestamps.
|
819
|
+
- Add --without tests option for building without running the test suite.
|
820
|
+
|
821
|
+
* Thu Oct 14 2010 Roman Rakus <rrakus@redhat.com> - 4.1.9-1
|
822
|
+
- Patch level 9
|
823
|
+
|
824
|
+
* Mon Aug 02 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-4
|
825
|
+
- Use better nomenclature for --rpm-requires bash option (#557134)
|
826
|
+
|
827
|
+
* Tue Jun 22 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-3
|
828
|
+
- Added missing patch
|
829
|
+
|
830
|
+
* Tue Jun 22 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-2
|
831
|
+
- Do the same CFLAGS in generated Makefile in examples
|
832
|
+
|
833
|
+
* Fri May 21 2010 Roman Rakus <rrakus@redhat.com> - 4.1.7-1
|
834
|
+
- Patch level 7
|
835
|
+
|
836
|
+
* Mon Apr 12 2010 Roman Rakus <rrakus@redhat.com> - 4.1.5-1
|
837
|
+
- Patch level 5
|
838
|
+
- There's no more need for Requires(post) ncurses-libs
|
839
|
+
|
840
|
+
* Tue Mar 30 2010 Roman Rakus <rrakus@redhat.com> - 4.1.2-4
|
841
|
+
- Corrected requires patch (#563301)
|
842
|
+
|
843
|
+
* Fri Jan 22 2010 rrakus@redhat.com 4.1.2-3
|
844
|
+
- Don't use cond-rmatch patch
|
845
|
+
- Use manso patch
|
846
|
+
- Include COPYING in base bash rpm
|
847
|
+
|
848
|
+
* Fri Jan 22 2010 rrakus@redhat.com 4.1.2-2
|
849
|
+
- Correct patchlevel 2
|
850
|
+
|
851
|
+
* Fri Jan 22 2010 Roman Rakus rrakus@redhat.com 4.1.2-1
|
852
|
+
- Patchlevel 4.2
|
853
|
+
- Removed old patch
|
854
|
+
- Returned back manso patch
|
855
|
+
|
856
|
+
* Fri Jan 08 2010 Roman Rakus rrakus@redhat.com 4.1.0-2
|
857
|
+
- Include COPYING in doc dir
|
858
|
+
|
859
|
+
* Mon Jan 04 2010 Roman Rakus <rrakus@redhat.com> - 4.1.0-1
|
860
|
+
- Upstream 4.1
|
861
|
+
|
862
|
+
* Sun Dec 27 2009 Roman Rakus <rrakus@redhat.com> - 4.1-0.2.rc1
|
863
|
+
- Fixed patch for fuzz=0
|
864
|
+
|
865
|
+
* Sun Dec 27 2009 Roman Rakus <rrakus@redhat.com> - 4.1-0.1.rc1
|
866
|
+
- Upstream 4.1.rc1
|
867
|
+
|
868
|
+
* Fri Dec 11 2009 Roman Rakus <rrakus@redhat.com> - 4.0.35-2
|
869
|
+
- Don't segfault when TERM=eterm* and EMACS is unset (#530911)
|
870
|
+
|
871
|
+
* Thu Oct 29 2009 Roman Rakus <rrakus@redhat.com> - 4.0.35-1
|
872
|
+
- Patch level 35
|
873
|
+
|
874
|
+
* Mon Oct 05 2009 Roman Rakus <rrakus@redhat.com> - 4.0.33-2
|
875
|
+
- Make symlink from bashbug-suffix to bashbug man pages
|
876
|
+
|
877
|
+
* Wed Sep 16 2009 Roman Rakus <rrakus@redhat.com> - 4.0.33-1
|
878
|
+
- Patch level 33
|
879
|
+
- spec file cleanup
|
880
|
+
|
881
|
+
* Fri Sep 04 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-3
|
882
|
+
- check if interp section is NOBITS
|
883
|
+
- define Recycles pids
|
884
|
+
|
885
|
+
* Wed Aug 26 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-2
|
886
|
+
- alloc memory for key in creation associative array (#518644)
|
887
|
+
|
888
|
+
* Tue Jul 28 2009 Roman Rakus <rrakus@redhat.com> - 4.0.28-1
|
889
|
+
- Upstream patch level 28
|
890
|
+
|
891
|
+
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0.24-2
|
892
|
+
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
893
|
+
|
894
|
+
* Tue May 19 2009 Roman Rakus <rrakus@redhat.com> - 4.0.24-1
|
895
|
+
- Upstream patch level 24
|
896
|
+
|
897
|
+
* Wed Apr 22 2009 Roman Rakus <rrakus@redhat.com> - 4.0.16-1
|
898
|
+
- better to use patch level in version tag like vim do
|
899
|
+
|
900
|
+
* Tue Apr 21 2009 Roman Rakus <rrakus@redhat.com> - 4.0-7.16
|
901
|
+
- Use patch level in Release tag
|
902
|
+
|
903
|
+
* Wed Apr 08 2009 Roman Rakus <rrakus@redhat.com> - 4.0-6
|
904
|
+
- Official upstream patch level 16
|
905
|
+
|
906
|
+
* Mon Mar 30 2009 Roman Rakus <rrakus@redhat.com> - 4.0-5
|
907
|
+
- Split documentation, use bash-doc package
|
908
|
+
Resolves: #492447
|
909
|
+
|
910
|
+
* Sat Mar 21 2009 Lubomir Rintel <lkundrak@v3.sk> - 4.0-4
|
911
|
+
- Add full URLs to upstream patches
|
912
|
+
- Don't uselessly use %%version macro
|
913
|
+
|
914
|
+
* Wed Mar 11 2009 Roman Rakus <rrakus@redhat.com> - 4.0-3
|
915
|
+
- Official upstream patch level 10
|
916
|
+
|
917
|
+
* Wed Feb 25 2009 Roman Rakus <rrakus@redhat.com> - 4.0-2
|
918
|
+
- Save parser state in pcomplete.
|
919
|
+
Resolves: #487257
|
920
|
+
|
921
|
+
* Tue Feb 24 2009 Roman Rakus <rrakus@redhat.com> - 4.0-1
|
922
|
+
- Release of bash-4.0
|
923
|
+
|
924
|
+
* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-0.5.rc1
|
925
|
+
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
926
|
+
|
927
|
+
* Wed Feb 11 2009 Roman Rakus <rrakus@redhat.com> - 4.0-0.4.rc1
|
928
|
+
- Fix handling pipelines with `set -e'
|
929
|
+
Resolves: #483385
|
930
|
+
|
931
|
+
* Thu Jan 29 2009 Roman Rakus <rrakus@redhat.com> - 4.0-0.3.rc1
|
932
|
+
- No more debug output
|
933
|
+
Resolves: #483002
|
934
|
+
|
935
|
+
* Wed Jan 28 2009 Jesse Keating <jkeating@redhat.com> - 4.0-0.2.rc1
|
936
|
+
- Replace post code with lua to be able to not have external deps
|
937
|
+
|
938
|
+
* Mon Jan 26 2009 Roman Rakus <rrakus@redhat.com> - 4.0-0.1.rc1
|
939
|
+
- Fixed release tag
|
940
|
+
|
941
|
+
* Wed Jan 21 2009 Roman Rakus <rrakus@redhat.com> - 4.0-rc1.1
|
942
|
+
- Bump to upstream bash-4.0-rc1
|
943
|
+
|
944
|
+
* Mon Dec 15 2008 Roman Rakus <rrakus@redhat.com> - 3.2-33
|
945
|
+
- fc builtin fix
|
946
|
+
Resolves: #438841
|
947
|
+
|
948
|
+
* Mon Dec 15 2008 Roman Rakus <rrakus@redhat.com> - 3.2-32
|
949
|
+
- Enabling auditing
|
950
|
+
Resolves: #476216
|
951
|
+
|
952
|
+
* Tue Dec 09 2008 Roman Rakus <rrakus@redhat.com> - 3.2-31
|
953
|
+
- Patchlevel 48
|
954
|
+
|
955
|
+
* Thu Dec 04 2008 Roman Rakus <rrakus@redhat.com> - 3.2-30
|
956
|
+
- Added check for `command_not_found_handler' shell function
|
957
|
+
Resolves: #432579
|
958
|
+
|
959
|
+
* Tue Oct 28 2008 Jesse Keating <jkeating@redhat.com> - 3.2-29
|
960
|
+
- Add the Requires(post) back for ncurses-libs, so that rpm knows
|
961
|
+
where to break the loop. The post actually does require the curses
|
962
|
+
libs for the sh calls. Could consider doing this in LUA and not have
|
963
|
+
any external deps.
|
964
|
+
|
965
|
+
* Thu Oct 23 2008 Roman Rakus <rrakus@redhat.com> - 3.2-28
|
966
|
+
- Removing Requires for mktemp and ncurses, which cause
|
967
|
+
dependencing loop
|
968
|
+
- Enabling #define SSH_SOURCE_BASHRC, because ssh changed.
|
969
|
+
Resolves: #458839
|
970
|
+
- Catch signals right after calling execve()
|
971
|
+
Resolves: #455548
|
972
|
+
|
973
|
+
* Thu Jul 17 2008 Roman Rakus <rrakus@redhat.com> - 3.2-27
|
974
|
+
- Changes in man page - #442018, #445692, #446625, #453409
|
975
|
+
- Changed patches to satisfy fuzz=0
|
976
|
+
|
977
|
+
* Thu Jun 5 2008 Roman Rakus <rrakus@redhat.com> - 3.2-26
|
978
|
+
- Patchlevel 39
|
979
|
+
|
980
|
+
* Tue Jun 3 2008 Roman Rakus <rrakus@redhat.com> - 3.2-25
|
981
|
+
- #449512 - reverting back last change - don't use glob library
|
982
|
+
|
983
|
+
* Wed May 28 2008 Roman Rakus <rrakus@redhat.com> - 3.2-24
|
984
|
+
- #217359 - use posix glob library
|
985
|
+
|
986
|
+
* Thu May 22 2008 Roman Rakus <rrakus@redhat.com> - 3.2-23
|
987
|
+
- #446420 - COMP_WORDBREAKS settings now works
|
988
|
+
|
989
|
+
* Fri Feb 29 2008 Tomas Janousek <tjanouse@redhat.com> - 3.2-22
|
990
|
+
- drop /usr/bin/clear from /etc/skel/.bash_logout as suggested by #429406
|
991
|
+
|
992
|
+
* Wed Feb 20 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.2-21
|
993
|
+
- Autorebuild for GCC 4.3
|
994
|
+
|
995
|
+
* Mon Jan 14 2008 Tomas Janousek <tjanouse@redhat.com> - 3.2-20
|
996
|
+
- Added bash32-026 upstream official patch
|
997
|
+
- Added bash32-027 upstream official patch (#249987)
|
998
|
+
- Added bash32-028 upstream official patch
|
999
|
+
- Added bash32-029 upstream official patch (#286861)
|
1000
|
+
- Added bash32-030 upstream official patch
|
1001
|
+
- Added bash32-031 upstream official patch (#358231)
|
1002
|
+
- Added bash32-032 upstream official patch
|
1003
|
+
- Added bash32-033 upstream official patch
|
1004
|
+
- Fix insert command repeating in vi mode (#190350)
|
1005
|
+
|
1006
|
+
* Tue Nov 06 2007 Tomas Janousek <tjanouse@redhat.com> - 3.2-19
|
1007
|
+
- fix cursor position when prompt has one invisible character (#358231)
|
1008
|
+
- dropped examples/loadables/ from docs, since it wasn't possible to build them
|
1009
|
+
anyway (#174380)
|
1010
|
+
- fix #286861: Wrong input confuses bash's arithmetic unit permanently
|
1011
|
+
- fix #344411: $RANDOM stays the same when job executed in the background
|
1012
|
+
|
1013
|
+
* Fri Aug 31 2007 Pete Graner <pgraner@redhat.com> - 3.2-18
|
1014
|
+
- Added bash32-021 upstream official patch
|
1015
|
+
- Added bash32-025 upstream official patch
|
1016
|
+
- Added bash32-024 upstream official patch
|
1017
|
+
- Added bash32-023 upstream official patch
|
1018
|
+
- Added bash32-022 upstream official patch
|
1019
|
+
|
1020
|
+
* Wed Aug 29 2007 Pete Graner <pgraner@redhat.com> - 3.2-17
|
1021
|
+
- Added bash32-018 upstream official patch
|
1022
|
+
- Added bash32-020 upstream official patch
|
1023
|
+
- Added bash32-019 upstream official patch
|
1024
|
+
|
1025
|
+
* Thu Aug 23 2007 Pete Graner <pgraner@redhat.com> - 3.2-16
|
1026
|
+
- Rebuild
|
1027
|
+
|
1028
|
+
* Mon Aug 20 2007 Pete Graner <pgraner@redhat.com> - 3.2-15
|
1029
|
+
- Update to the Improve bash $RANDOM pseudo RNG (bug #234906)
|
1030
|
+
now works with subshells and make $RANDOM on demand thus reducing the
|
1031
|
+
amount of AVCs thrown.
|
1032
|
+
|
1033
|
+
* Thu Aug 16 2007 Pete Graner <pgraner@redhat.com> - 3.2-15
|
1034
|
+
- Changed spec file License to GPLv2+
|
1035
|
+
|
1036
|
+
* Wed Aug 15 2007 Pete Graner <pgraner@redhat.com> - 3.2-13
|
1037
|
+
- Improve bash $RANDOM pseudo RNG (bug #234906)
|
1038
|
+
|
1039
|
+
* Fri Jul 20 2007 Tim Waugh <twaugh@redhat.com> 3.2-12
|
1040
|
+
- Quote environment variables in the post scriptlet to prevent upgrade
|
1041
|
+
failures (bug #249005).
|
1042
|
+
|
1043
|
+
* Thu Jul 5 2007 Tim Waugh <twaugh@redhat.com> 3.2-11
|
1044
|
+
- Patchlevel 17 (bug #241647).
|
1045
|
+
|
1046
|
+
* Wed Jul 4 2007 Tim Waugh <twaugh@redhat.com> 3.2-10
|
1047
|
+
- Clarification in the ulimit man page (bug #220657).
|
1048
|
+
|
1049
|
+
* Mon Feb 12 2007 Tim Waugh <twaugh@redhat.com> 3.2-9
|
1050
|
+
- Rebuild to link with libtinfo instead of libncurses.
|
1051
|
+
|
1052
|
+
* Wed Feb 7 2007 Tim Waugh <twaugh@redhat.com> 3.2-8
|
1053
|
+
- Avoid %%makeinstall (bug #225609).
|
1054
|
+
|
1055
|
+
* Tue Feb 6 2007 Tim Waugh <twaugh@redhat.com> 3.2-7
|
1056
|
+
- Reinstated this change:
|
1057
|
+
- Post requires ncurses (bug #224567).
|
1058
|
+
- Reverted this change:
|
1059
|
+
- Added triggers for install-info (bug #225609).
|
1060
|
+
|
1061
|
+
* Tue Feb 6 2007 Tim Waugh <twaugh@redhat.com> 3.2-6
|
1062
|
+
- Reverted this change:
|
1063
|
+
- Post requires ncurses (bug #224567).
|
1064
|
+
|
1065
|
+
* Mon Feb 5 2007 Tim Waugh <twaugh@redhat.com> 3.2-5
|
1066
|
+
- Added triggers for install-info (bug #225609).
|
1067
|
+
- Use full path to utilities in scriptlets (bug #225609).
|
1068
|
+
- Fix missing sh-bangs in example scripts (bug #225609).
|
1069
|
+
- Post requires ncurses (bug #224567).
|
1070
|
+
- Removed Prefix tag (bug #225609).
|
1071
|
+
- Fixed BuildRoot tag (bug #225609).
|
1072
|
+
- Removed trailing full-stop from summary (bug #225609).
|
1073
|
+
- Spec file is now UTF-8 (bug #225609).
|
1074
|
+
- Removed obsolete Obsoletes (bug #225609).
|
1075
|
+
- Moved 'make check' to new 'check' section (bug #225609).
|
1076
|
+
- Removed uses of RPM_SOURCE_DIR (bug #225609).
|
1077
|
+
- Fixed macros in changelog (bug #225609).
|
1078
|
+
- Changed tabs to spaces (bug #225609).
|
1079
|
+
|
1080
|
+
* Tue Jan 23 2007 Tim Waugh <twaugh@redhat.com> 3.2-4
|
1081
|
+
- Slightly better .bash_logout (bug #223960).
|
1082
|
+
|
1083
|
+
* Fri Jan 19 2007 Tim Waugh <twaugh@redhat.com> 3.2-3
|
1084
|
+
- Back out rmatch change introduced in 3.2 (bug #220087).
|
1085
|
+
|
1086
|
+
* Tue Jan 16 2007 Miroslav Lichvar <mlichvar@redhat.com> 3.2-2
|
1087
|
+
- Link with ncurses.
|
1088
|
+
|
1089
|
+
* Fri Dec 15 2006 Tim Waugh <twaugh@redhat.com> 3.2-1
|
1090
|
+
- Build requires autoconf and gettext.
|
1091
|
+
- 3.2. No longer need aq, login, ulimit, sighandler or read-memleak
|
1092
|
+
patches.
|
1093
|
+
|
1094
|
+
* Wed Jul 12 2006 Tim Waugh <twaugh@redhat.com> 3.1-17
|
1095
|
+
- Fixed 'tags out of date' problem with 'info bash' (bug #150118).
|
1096
|
+
|
1097
|
+
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3.1-16.1
|
1098
|
+
- rebuild
|
1099
|
+
|
1100
|
+
* Wed Jun 28 2006 Tim Waugh <twaugh@redhat.com> 3.1-16
|
1101
|
+
- Removed 'unset USERNAME' from default .bash_profile (bug #196735).
|
1102
|
+
|
1103
|
+
* Thu Jun 15 2006 Tim Waugh <twaugh@redhat.com> 3.1-15
|
1104
|
+
- Updated requires patch to the ALT version.
|
1105
|
+
|
1106
|
+
* Wed May 31 2006 Tim Waugh <twaugh@redhat.com> 3.1-14
|
1107
|
+
- More sighandler fixes, this time hypothetical.
|
1108
|
+
|
1109
|
+
* Thu May 26 2006 Tim Waugh <twaugh@redhat.com> 3.1-13
|
1110
|
+
- Another fix for the sighandler patch (bug #192297).
|
1111
|
+
|
1112
|
+
* Thu Apr 13 2006 Tim Waugh <twaugh@redhat.com> 3.1-12
|
1113
|
+
- Patchlevel 17.
|
1114
|
+
|
1115
|
+
* Tue Apr 4 2006 Tim Waugh <twaugh@redhat.com> 3.1-11
|
1116
|
+
- Patchlevel 16.
|
1117
|
+
|
1118
|
+
* Thu Mar 23 2006 Tim Waugh <twaugh@redhat.com> 3.1-10
|
1119
|
+
- Patchlevel 14.
|
1120
|
+
|
1121
|
+
* Thu Mar 2 2006 Tim Waugh <twaugh@redhat.com> 3.1-9
|
1122
|
+
- Fixed duplicate documentation of ulimit '-x' option introduced by
|
1123
|
+
ulimit patch (bug #183596).
|
1124
|
+
|
1125
|
+
* Tue Feb 21 2006 Tim Waugh <twaugh@redhat.com> 3.1-8
|
1126
|
+
- Patchlevel 10.
|
1127
|
+
|
1128
|
+
* Thu Feb 16 2006 Tim Waugh <twaugh@redhat.com> 3.1-7
|
1129
|
+
- Patchlevel 8.
|
1130
|
+
|
1131
|
+
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 3.1-6.2
|
1132
|
+
- bump again for double-long bug on ppc(64)
|
1133
|
+
|
1134
|
+
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3.1-6.1
|
1135
|
+
- rebuilt for new gcc4.1 snapshot and glibc changes
|
1136
|
+
|
1137
|
+
* Sun Feb 5 2006 Tim Waugh <twaugh@redhat.com> 3.1-6
|
1138
|
+
- Patchlevel 7.
|
1139
|
+
|
1140
|
+
* Wed Jan 18 2006 Tim Waugh <twaugh@redhat.com>
|
1141
|
+
- Removed inaccuracies from %%description (bug #178189).
|
1142
|
+
|
1143
|
+
* Fri Jan 13 2006 Tim Waugh <twaugh@redhat.com> 3.1-5
|
1144
|
+
- Fix 'exec -l /bin/bash'.
|
1145
|
+
|
1146
|
+
* Thu Jan 12 2006 Tim Waugh <twaugh@redhat.com> 3.1-4
|
1147
|
+
- Fix sighandler patch bug (bug #177545).
|
1148
|
+
|
1149
|
+
* Tue Jan 10 2006 Tim Waugh <twaugh@redhat.com> 3.1-3
|
1150
|
+
- Patchlevel 5.
|
1151
|
+
|
1152
|
+
* Fri Jan 6 2006 Tim Waugh <twaugh@redhat.com> 3.1-2
|
1153
|
+
- No longer need loadables, mbinc or shellfunc patches.
|
1154
|
+
- Use literal single-quote in bash man page where appropriate (bug #177051).
|
1155
|
+
|
1156
|
+
* Mon Jan 2 2006 Tim Waugh <twaugh@redhat.com> 3.1-1
|
1157
|
+
- 3.1.
|
1158
|
+
- No longer need ia64, utf8, multibyteifs, jobs, sigpipe,
|
1159
|
+
read-e-segfault, manpage, crash, pwd, afs, subshell patches.
|
1160
|
+
- Remove wrap patch for now.
|
1161
|
+
- Use upstream patch to fix arrays.
|
1162
|
+
|
1163
|
+
* Thu Dec 15 2005 Tim Waugh <twaugh@redhat.com> 3.0-41
|
1164
|
+
- Missed another loop for improved sighandler patch (bug #169231).
|
1165
|
+
|
1166
|
+
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
|
1167
|
+
- rebuilt
|
1168
|
+
|
1169
|
+
* Thu Dec 8 2005 Tim Waugh <twaugh@redhat.com> 3.0-40
|
1170
|
+
- Fix read memleak when reading from non-blocking fd (bug #173283).
|
1171
|
+
- Missed another loop for improved sighandler patch (bug #169231).
|
1172
|
+
|
1173
|
+
* Wed Dec 7 2005 Tim Waugh <twaugh@redhat.com> 3.0-39
|
1174
|
+
- Missed a loop for improved sighandler patch (bug #169231).
|
1175
|
+
|
1176
|
+
* Tue Dec 6 2005 Tim Waugh <twaugh@redhat.com> 3.0-38
|
1177
|
+
- Test out improved sighandler patch (bug #169231).
|
1178
|
+
|
1179
|
+
* Tue Nov 22 2005 Tim Waugh <twaugh@redhat.com> 3.0-37
|
1180
|
+
- Applied patch from upstream to fix parsing problem (bug #146638).
|
1181
|
+
|
1182
|
+
* Wed Nov 9 2005 Tim Waugh <twaugh@redhat.com> 3.0-36
|
1183
|
+
- Added Url: tag (bug #172770).
|
1184
|
+
- Do not explicitly gzip info pages (bug #172770).
|
1185
|
+
- Fix permissions on bashbug (bug #172770).
|
1186
|
+
|
1187
|
+
* Thu Oct 6 2005 Tim Waugh <twaugh@redhat.com> 3.0-35
|
1188
|
+
- Fixed memory allocation bug in multibyteifs patch (bug #169996).
|
1189
|
+
|
1190
|
+
* Fri Sep 23 2005 Tim Waugh <twaugh@redhat.com>
|
1191
|
+
- Use 'volatile' in sighandler patch.
|
1192
|
+
|
1193
|
+
* Wed Sep 21 2005 Tim Waugh <twaugh@redhat.com> 3.0-34
|
1194
|
+
- Avoid writing history files during signal handling (bug #163235).
|
1195
|
+
|
1196
|
+
* Mon Aug 8 2005 Tim Waugh <twaugh@redhat.com> 3.0-33
|
1197
|
+
- Fixed multibyte IFS handling for invalid input (bug #165243).
|
1198
|
+
|
1199
|
+
* Mon Aug 8 2005 Tim Waugh <twaugh@redhat.com> 3.0-32
|
1200
|
+
- Fixed 'LC_ALL=C export LC_ALL' behaviour (bug #165249).
|
1201
|
+
|
1202
|
+
* Thu Jun 23 2005 Tim Waugh <twaugh@redhat.com>
|
1203
|
+
- Added ulimit support for RLIMIT_NICE and RLIMIT_RTPRIO (bug #157049).
|
1204
|
+
|
1205
|
+
* Wed Jun 8 2005 Tim Waugh <twaugh@redhat.com>
|
1206
|
+
- Move a comment in dot-bashrc (bug #159522).
|
1207
|
+
|
1208
|
+
* Tue May 10 2005 Tim Waugh <twaugh@redhat.com> 3.0-31
|
1209
|
+
- Small fix for multibyteifs patch to prevent segfault (bug #157260).
|
1210
|
+
|
1211
|
+
* Wed Apr 20 2005 Tim Waugh <twaugh@redhat.com>
|
1212
|
+
- Fixed AFS support for output redirection, so that the correct errors
|
1213
|
+
are reported for other filesystems (bug #155373).
|
1214
|
+
|
1215
|
+
* Tue Mar 15 2005 Tim Waugh <twaugh@redhat.com> 3.0-30
|
1216
|
+
- Fix PS1 expansion crash when PWD is unset (bg #151116).
|
1217
|
+
|
1218
|
+
* Wed Mar 2 2005 Tim Waugh <twaugh@redhat.com> 3.0-29
|
1219
|
+
- Rebuild for new GCC.
|
1220
|
+
|
1221
|
+
* Thu Feb 17 2005 Tim Waugh <twaugh@redhat.com> 3.0-28
|
1222
|
+
- Define _GNU_SOURCE in CPPFLAGS (bug #147573).
|
1223
|
+
|
1224
|
+
* Mon Feb 14 2005 Tim Waugh <twaugh@redhat.com>
|
1225
|
+
- Reverted this change:
|
1226
|
+
- Added code to /etc/skel/.bash_logout to support the gpm selection buffer
|
1227
|
+
invalidation on virtual terminals (bug #115493).
|
1228
|
+
|
1229
|
+
* Mon Jan 31 2005 Tim Waugh <twaugh@redhat.com> 3.0-27
|
1230
|
+
- Applied upstream patch to fix a potential NULL dereference.
|
1231
|
+
|
1232
|
+
* Fri Jan 28 2005 Tim Waugh <twaugh@redhat.com> 3.0-26
|
1233
|
+
- Fixed job handling bug (bug #145124).
|
1234
|
+
|
1235
|
+
* Sun Dec 5 2004 Tim Waugh <twaugh@redhat.com> 3.0-25
|
1236
|
+
- Applied patch from Florian La Roche to fix CPPFLAGS quoting in spec file.
|
1237
|
+
|
1238
|
+
* Tue Nov 30 2004 Tim Waugh <twaugh@redhat.com>
|
1239
|
+
- Fixed typo in man page (spotted on bug-bash).
|
1240
|
+
|
1241
|
+
* Thu Nov 18 2004 Tim Waugh <twaugh@redhat.com> 3.0-24
|
1242
|
+
- Use upstream patch to fix bug #139575 and bug #139306.
|
1243
|
+
|
1244
|
+
* Thu Nov 18 2004 Tim Waugh <twaugh@redhat.com> 3.0-23
|
1245
|
+
- Fixed last patch to avoid regressions (bug #139575).
|
1246
|
+
|
1247
|
+
* Mon Nov 15 2004 Tim Waugh <twaugh@redhat.com> 3.0-22
|
1248
|
+
- Fixed prompt wrapping code to cope with zero-length prompts (bug #139306).
|
1249
|
+
|
1250
|
+
* Thu Nov 11 2004 Tim Waugh <twaugh@redhat.com> 3.0-21
|
1251
|
+
- Added code to /etc/skel/.bash_logout to support the gpm selection buffer
|
1252
|
+
invalidation on virtual terminals (bug #115493).
|
1253
|
+
|
1254
|
+
* Wed Nov 10 2004 Tim Waugh <twaugh@redhat.com> 3.0-20
|
1255
|
+
- Patchlevel 16.
|
1256
|
+
|
1257
|
+
* Mon Nov 1 2004 Tim Waugh <twaugh@redhat.com>
|
1258
|
+
- Patchlevel 15.
|
1259
|
+
|
1260
|
+
* Tue Oct 19 2004 Tim Waugh <twaugh@redhat.com> 3.0-17
|
1261
|
+
- Patchlevel 14.
|
1262
|
+
- No longer need brace patch.
|
1263
|
+
|
1264
|
+
* Wed Sep 29 2004 Tim Waugh <twaugh@redhat.com> 3.0-16
|
1265
|
+
- Apply patch from Chet Ramey to fix brace expansion.
|
1266
|
+
|
1267
|
+
* Fri Sep 24 2004 Tim Waugh <twaugh@redhat.com> 3.0-15
|
1268
|
+
- Minor fix for job handling.
|
1269
|
+
|
1270
|
+
* Mon Sep 13 2004 Tim Waugh <twaugh@redhat.com>
|
1271
|
+
- Add bashbug back in (with suffix).
|
1272
|
+
|
1273
|
+
* Mon Sep 13 2004 Tim Waugh <twaugh@redhat.com>
|
1274
|
+
- Remove bash2.
|
1275
|
+
|
1276
|
+
* Fri Sep 10 2004 Tim Waugh <twaugh@redhat.com> 3.0-14
|
1277
|
+
- Don't run tests that read from /dev/tty.
|
1278
|
+
- Patchlevel 13.
|
1279
|
+
|
1280
|
+
* Wed Sep 8 2004 Tim Waugh <twaugh@redhat.com> 3.0-13
|
1281
|
+
- Check for EINVAL from waitpid() and avoid WCONTINUED in that case.
|
1282
|
+
- Fixed jobs4 test.
|
1283
|
+
- Applied experimental upstream patch for trap compatibility.
|
1284
|
+
- Re-make documentation to reflect source changes.
|
1285
|
+
|
1286
|
+
* Tue Sep 7 2004 Tim Waugh <twaugh@redhat.com> 3.0-12
|
1287
|
+
- Remove 'bashbug' from the documentation, because we don't ship it due
|
1288
|
+
to biarch concerns.
|
1289
|
+
|
1290
|
+
* Thu Sep 2 2004 Tim Waugh <twaugh@redhat.com> 3.0-11
|
1291
|
+
- Fixed multibyte parameter length expansion.
|
1292
|
+
|
1293
|
+
* Tue Aug 31 2004 Tim Waugh <twaugh@redhat.com> 3.0-9
|
1294
|
+
- Fix ulimits patch from Ulrich Drepper (bug #129800).
|
1295
|
+
|
1296
|
+
* Fri Aug 27 2004 Tim Waugh <twaugh@redhat.com> 3.0-8
|
1297
|
+
- Provide support for new limits (bug #129800).
|
1298
|
+
|
1299
|
+
* Thu Aug 26 2004 Tim Waugh <twaugh@redhat.com> 3.0-7
|
1300
|
+
- Use upstream patch for last fix.
|
1301
|
+
|
1302
|
+
* Thu Aug 26 2004 Tim Waugh <twaugh@redhat.com> 3.0-6
|
1303
|
+
- Fixed history saved-line handling.
|
1304
|
+
|
1305
|
+
* Tue Aug 24 2004 Tim Waugh <twaugh@redhat.com>
|
1306
|
+
- Fixed multibyte IFS handling.
|
1307
|
+
|
1308
|
+
* Wed Aug 18 2004 Tim Waugh <twaugh@redhat.com>
|
1309
|
+
- Applied bug-bash list patch to fix pipefail.
|
1310
|
+
|
1311
|
+
* Tue Aug 17 2004 Tim Waugh <twaugh@redhat.com> 3.0-5
|
1312
|
+
- Make trap usage string show POSIX usage (bug #128938).
|
1313
|
+
- Updated ${x[@]:1} expansion fix from bug-bash list.
|
1314
|
+
- Updated patch to fix unset array crash (from bug-bash list).
|
1315
|
+
|
1316
|
+
* Sun Aug 15 2004 Tim Waugh <twaugh@redhat.com>
|
1317
|
+
- Fix ${x[@]:1} expansion (William Park, bug-bash list).
|
1318
|
+
|
1319
|
+
* Tue Aug 10 2004 Tim Waugh <twaugh@redhat.com> 3.0-4
|
1320
|
+
- Fix vi-change-char behaviour at EOL (bug #129526).
|
1321
|
+
|
1322
|
+
* Mon Aug 9 2004 Tim Waugh <twaugh@redhat.com> 3.0-3
|
1323
|
+
- Applied bug-bash list patch to fix multiline PS1 prompting (bug #129382).
|
1324
|
+
|
1325
|
+
* Wed Aug 4 2004 Tim Waugh <twaugh@redhat.com> 3.0-2
|
1326
|
+
- Fixed brace expansion (bug #129128).
|
1327
|
+
- Build with AFS support again, since bug #86514 seems fixed upstream
|
1328
|
+
(bug #129094).
|
1329
|
+
|
1330
|
+
* Tue Aug 3 2004 Tim Waugh <twaugh@redhat.com>
|
1331
|
+
- Fixed crash when unsetting an unset array (from bug-bash list).
|
1332
|
+
|
1333
|
+
* Wed Jul 28 2004 Tim Waugh <twaugh@redhat.com> 3.0-1
|
1334
|
+
- 3.0.
|
1335
|
+
|
1336
|
+
* Wed Jul 21 2004 Tim Waugh <twaugh@redhat.com> 2.05b-44
|
1337
|
+
- Don't report SIGPIPE errors (bug #128274).
|
1338
|
+
|
1339
|
+
* Thu Jul 8 2004 Tim Waugh <twaugh@redhat.com> 2.05b-43
|
1340
|
+
- Fixed command substitution problem (bug #127242).
|
1341
|
+
|
1342
|
+
* Mon Jun 28 2004 Tim Waugh <twaugh@redhat.com> 2.05b-42
|
1343
|
+
- Fixed multibyte variable substitution patch (bug #126399).
|
1344
|
+
|
1345
|
+
* Thu Jun 17 2004 Karsten Hopp <karsten@redhat.de> 2.05b-41
|
1346
|
+
- remove bashbug script/docs to avoid conflicting files in
|
1347
|
+
biarch installs.
|
1348
|
+
|
1349
|
+
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
|
1350
|
+
- rebuilt
|
1351
|
+
|
1352
|
+
* Fri Jun 4 2004 Tim Waugh <twaugh@redhat.com>
|
1353
|
+
- Build requires bison (bug #125307).
|
1354
|
+
|
1355
|
+
* Wed Jun 2 2004 Tim Waugh <twaugh@redhat.com> 2.05b-39
|
1356
|
+
- Build requires libtermcap-devel (bug #125068).
|
1357
|
+
|
1358
|
+
* Wed May 19 2004 Tim Waugh <twaugh@redhat.com>
|
1359
|
+
- Don't ship empty %%{_libdir}/bash (bug #123556).
|
1360
|
+
|
1361
|
+
* Thu Mar 11 2004 Tim Waugh <twaugh@redhat.com> 2.05b-38
|
1362
|
+
- Apply patch from Nalin Dahyabhai fixing an overread.
|
1363
|
+
|
1364
|
+
* Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com>
|
1365
|
+
- rebuilt
|
1366
|
+
|
1367
|
+
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
|
1368
|
+
- rebuilt
|
1369
|
+
|
1370
|
+
* Thu Jan 22 2004 Tim Waugh <twaugh@redhat.com> 2.05b-36
|
1371
|
+
- Fix the bug causing bindings to need reparsing .inputrc (bug #114101).
|
1372
|
+
|
1373
|
+
* Mon Jan 5 2004 Tim Waugh <twaugh@redhat.com> 2.05b-35
|
1374
|
+
- Fix parameter expansion in multibyte locales (bug #112657).
|
1375
|
+
- Run 'make check'.
|
1376
|
+
|
1377
|
+
* Tue Dec 9 2003 Tim Waugh <twaugh@redhat.com> 2.05b-34
|
1378
|
+
- Build requires texinfo (bug #111171).
|
1379
|
+
|
1380
|
+
* Fri Nov 28 2003 Tim Waugh <twaugh@redhat.com> 2.05b-33
|
1381
|
+
- Speed up UTF-8 command-line redrawing in the common case (bug #102353,
|
1382
|
+
bug #110777).
|
1383
|
+
|
1384
|
+
* Thu Nov 6 2003 Tim Waugh <twaugh@redhat.com> 2.05b-32
|
1385
|
+
- Apply upstream patches (bug #109269 among others).
|
1386
|
+
|
1387
|
+
* Fri Oct 31 2003 Tim Waugh <twaugh@redhat.com>
|
1388
|
+
- Fix bash.info (bug #83776).
|
1389
|
+
|
1390
|
+
* Tue Oct 28 2003 Tim Waugh <twaugh@redhat.com> 2.05b-31
|
1391
|
+
- Add bash205b-007 patch to fix bug #106876.
|
1392
|
+
|
1393
|
+
* Thu Oct 23 2003 Tim Waugh <twaugh@redhat.com> 2.05b-30
|
1394
|
+
- Rebuilt.
|
1395
|
+
|
1396
|
+
* Thu Sep 18 2003 Tim Waugh <twaugh@redhat.com> 2.05b-29.1
|
1397
|
+
- Rebuilt.
|
1398
|
+
|
1399
|
+
* Thu Sep 18 2003 Tim Waugh <twaugh@redhat.com> 2.05b-29
|
1400
|
+
- Avoid crashing on multibyte input when locale is set incorrectly
|
1401
|
+
(bug #74266).
|
1402
|
+
|
1403
|
+
* Fri Sep 5 2003 Tim Waugh <twaugh@redhat.com> 2.05b-28.1
|
1404
|
+
- Rebuilt.
|
1405
|
+
|
1406
|
+
* Fri Sep 5 2003 Tim Waugh <twaugh@redhat.com> 2.05b-28
|
1407
|
+
- Avoid built-in malloc implementation (bug #103768).
|
1408
|
+
|
1409
|
+
* Wed Sep 3 2003 Tim Waugh <twaugh@redhat.com> 2.05b-27.1
|
1410
|
+
- Rebuilt.
|
1411
|
+
|
1412
|
+
* Wed Sep 3 2003 Tim Waugh <twaugh@redhat.com> 2.05b-27
|
1413
|
+
- LFS support (bug #103627).
|
1414
|
+
|
1415
|
+
* Thu Jul 31 2003 Tim Waugh <twaugh@redhat.com> 2.05b-26.1
|
1416
|
+
- Rebuilt.
|
1417
|
+
|
1418
|
+
* Thu Jul 31 2003 Tim Waugh <twaugh@redhat.com> 2.05b-26
|
1419
|
+
- Merge bash-doc into main package (bug #100632).
|
1420
|
+
|
1421
|
+
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> 2.05b-25
|
1422
|
+
- rebuilt
|
1423
|
+
|
1424
|
+
* Mon May 12 2003 Tim Waugh <twaugh@redhat.com> 2.05b-24
|
1425
|
+
- Fix completion display when multibyte or control characters are to be
|
1426
|
+
shown (bug #90201).
|
1427
|
+
|
1428
|
+
* Tue Mar 26 2003 Tim Waugh <twaugh@redhat.com> 2.05b-23
|
1429
|
+
- Fix a warning message (bug #79629).
|
1430
|
+
- Don't remove generated source during build, for debuginfo package.
|
1431
|
+
- Don't build with AFS support (bug #86514).
|
1432
|
+
|
1433
|
+
* Tue Mar 25 2003 Tim Waugh <twaugh@redhat.com> 2.05b-22
|
1434
|
+
- Really fix bug #78455.
|
1435
|
+
|
1436
|
+
* Tue Mar 11 2003 Tim Waugh <twaugh@redhat.com> 2.05b-21
|
1437
|
+
- Don't explicitly strip binaries (bug #85995).
|
1438
|
+
|
1439
|
+
* Tue Feb 11 2003 Tim Waugh <twaugh@redhat.com> 2.05b-20
|
1440
|
+
- Really fix bug #83331 for good.
|
1441
|
+
|
1442
|
+
* Mon Feb 10 2003 Tim Waugh <twaugh@redhat.com> 2.05b-19
|
1443
|
+
- Fix builtins.1.
|
1444
|
+
|
1445
|
+
* Fri Feb 7 2003 Tim Waugh <twaugh@redhat.com> 2.05b-18
|
1446
|
+
- Actually apply the patch (bug #83331).
|
1447
|
+
|
1448
|
+
* Wed Feb 5 2003 Tim Waugh <twaugh@redhat.com> 2.05b-17
|
1449
|
+
- Fix history/UTF-8 bug (bug #83331).
|
1450
|
+
|
1451
|
+
* Sun Jan 26 2003 Tim Waugh <twaugh@redhat.com> 2.05b-16
|
1452
|
+
- More tab-completion fixing (bug #72512).
|
1453
|
+
|
1454
|
+
* Wed Jan 22 2003 Tim Powers <timp@redhat.com> 2.05b-15
|
1455
|
+
- rebuilt
|
1456
|
+
|
1457
|
+
* Wed Jan 15 2003 Tim Waugh <twaugh@redhat.com> 2.05b-14
|
1458
|
+
- Force pgrp synchronization (bug #81653).
|
1459
|
+
|
1460
|
+
* Thu Dec 05 2002 Elliot Lee <sopwith@redhat.com> 2.05b-13
|
1461
|
+
- (patch26) Don't call 'size' in makefile. Pointless, and interferes with
|
1462
|
+
cross compiles.
|
1463
|
+
|
1464
|
+
* Tue Dec 3 2002 Tim Waugh <twaugh@redhat.com> 2.05b-12
|
1465
|
+
- Prevent prompt overwriting output (bug #74383).
|
1466
|
+
|
1467
|
+
* Wed Nov 27 2002 Tim Waugh <twaugh@redhat.com> 2.05b-11
|
1468
|
+
- Fix '-rbash' (bug #78455).
|
1469
|
+
|
1470
|
+
* Thu Nov 21 2002 Tim Waugh <twaugh@redhat.com> 2.05b-10
|
1471
|
+
- Rebuild.
|
1472
|
+
|
1473
|
+
* Wed Nov 20 2002 Elliot Lee <sopwith@redhat.com>
|
1474
|
+
- Use the configure macro instead of calling ./configure directly
|
1475
|
+
|
1476
|
+
* Wed Nov 13 2002 Tim Waugh <twaugh@redhat.com>
|
1477
|
+
- Revert previous change.
|
1478
|
+
|
1479
|
+
* Wed Nov 13 2002 Tim Waugh <twaugh@redhat.com> 2.05b-8
|
1480
|
+
- PreReq libtermcap.
|
1481
|
+
|
1482
|
+
* Fri Oct 18 2002 Tim Waugh <twaugh@redhat.com> 2.05b-7
|
1483
|
+
- Add readline-init patch (bug #74925).
|
1484
|
+
|
1485
|
+
* Wed Oct 16 2002 Tim Waugh <twaugh@redhat.com> 2.05b-6
|
1486
|
+
- Add the (4) patches from ftp.gnu.org (bug #75888, bug #72512).
|
1487
|
+
- Ship '.' man page, which doesn't get picked up by glob.
|
1488
|
+
- Don't install files not shipped when building.
|
1489
|
+
- Locale shell variables fix (bug #74701).
|
1490
|
+
|
1491
|
+
* Fri Aug 23 2002 Tim Powers <timp@redhat.com> 2.05b-5
|
1492
|
+
- re-bzip the docs, something was corrupted
|
1493
|
+
|
1494
|
+
* Thu Aug 22 2002 Tim Waugh <twaugh@redhat.com> 2.05b-4
|
1495
|
+
- Fix history substitution modifiers in UTF-8 (bug #70294, bug #71186).
|
1496
|
+
- Fix ADVANCE_CHAR at end of string (bug #70819).
|
1497
|
+
- docs: CWRU/POSIX.NOTES no longer exists, but ship POSIX.
|
1498
|
+
|
1499
|
+
* Wed Aug 07 2002 Phil Knirsch <pknirsch@redhat.com> 2.05b-3
|
1500
|
+
- Fixed out of memory problem with readline.
|
1501
|
+
|
1502
|
+
* Tue Jul 23 2002 Phil Knirsch <pknirsch@redhat.com> 2.05b-2
|
1503
|
+
- Added symlink for sh.1 in man1 section so that man sh works (#44039).
|
1504
|
+
|
1505
|
+
* Mon Jul 22 2002 Phil Knirsch <pknirsch@redhat.com> 2.05b-1
|
1506
|
+
- Update to 2.05b
|
1507
|
+
|
1508
|
+
* Wed Jul 10 2002 Phil Knirsch <pknirsch@redhat.com> 2.05a-16
|
1509
|
+
- Fixed readline utf8 problem (#68313).
|
1510
|
+
|
1511
|
+
* Fri Jun 21 2002 Tim Powers <timp@redhat.com> 2.05a-15
|
1512
|
+
- automated rebuild
|
1513
|
+
|
1514
|
+
* Thu May 23 2002 Tim Powers <timp@redhat.com> 2.05a-14
|
1515
|
+
- automated rebuild
|
1516
|
+
|
1517
|
+
* Fri Apr 12 2002 Tim Powers <timp@redhat.com> 2.05a-13
|
1518
|
+
- don't build the stuff in examples/loadables. It breaks FHS
|
1519
|
+
compliance
|
1520
|
+
|
1521
|
+
* Fri Apr 5 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-12
|
1522
|
+
- Fix the fix for #62418
|
1523
|
+
|
1524
|
+
* Thu Apr 4 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-11
|
1525
|
+
- Fix kill builtin (#62418)
|
1526
|
+
|
1527
|
+
* Mon Mar 25 2002 Trond Eivind Glomsrød <teg@redhat.com> 2.0.5a-10
|
1528
|
+
- Get rid of completion subpackage
|
1529
|
+
- Use %%{_tmppath}
|
1530
|
+
|
1531
|
+
* Mon Mar 11 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-9
|
1532
|
+
- Add patch from Ulrich Drepper to get better error messages when trying
|
1533
|
+
to launch an application with a bad ELF interpreter (e.g. libc5 ld.so)
|
1534
|
+
(#60870)
|
1535
|
+
|
1536
|
+
* Fri Feb 22 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-8
|
1537
|
+
- Update completion
|
1538
|
+
|
1539
|
+
* Wed Jan 30 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-7
|
1540
|
+
- Update completion stuff and move it to a separate package
|
1541
|
+
|
1542
|
+
* Sat Jan 26 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-6
|
1543
|
+
- Add patches from Ian Macdonald <ian@caliban.org>
|
1544
|
+
|
1545
|
+
* Wed Jan 23 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-5
|
1546
|
+
- Add programmable completion (optional)
|
1547
|
+
|
1548
|
+
* Thu Jan 17 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-4
|
1549
|
+
- Fix mailcheck (#57792)
|
1550
|
+
|
1551
|
+
* Tue Jan 15 2002 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-3
|
1552
|
+
- Fix autoconf mess
|
1553
|
+
- Build --with-afs, some users may be using it
|
1554
|
+
|
1555
|
+
* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
|
1556
|
+
- automated rebuild
|
1557
|
+
|
1558
|
+
* Thu Nov 22 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-2
|
1559
|
+
- Fix conflict with sh-utils (printf builtin manpage vs. printf binary manpage)
|
1560
|
+
(#56590)
|
1561
|
+
|
1562
|
+
* Tue Nov 20 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05a-1
|
1563
|
+
- 2.05a
|
1564
|
+
|
1565
|
+
* Wed Oct 10 2001 Florian La Roche <Florian.LaRoche@redhat.de>
|
1566
|
+
- disable s390x fix, not needed anymore
|
1567
|
+
|
1568
|
+
* Mon Oct 1 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-9
|
1569
|
+
- Add patch from readline 4.2-3 to bash's internal libreadline
|
1570
|
+
|
1571
|
+
* Mon Jul 9 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-8
|
1572
|
+
- Merge Pekka Savola's patch (RFE#47762)
|
1573
|
+
|
1574
|
+
* Mon Jul 2 2001 Pekka Savola <pekkas@netcore.fi>
|
1575
|
+
- Add IPv6 patch from PLD (only redirection to /dev/{tcp,udp}/host/port
|
1576
|
+
support)
|
1577
|
+
|
1578
|
+
* Sun Jun 24 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-7
|
1579
|
+
- Add some bugfix patches from the maintainer
|
1580
|
+
|
1581
|
+
* Mon Jun 11 2001 Florian La Roche <Florian.LaRoche@redhat.de>
|
1582
|
+
- added patch for s390x from <oliver.paukstadt@millenux.com>
|
1583
|
+
|
1584
|
+
* Wed May 23 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-5
|
1585
|
+
- Don't set BASH_ENV in .bash_profile, it causes .bashrc to be sourced
|
1586
|
+
twice in interactive non-login shells.
|
1587
|
+
- s/Copyright/License/
|
1588
|
+
|
1589
|
+
* Fri May 5 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-4
|
1590
|
+
- Fix tempfile creation in bashbug
|
1591
|
+
|
1592
|
+
* Wed May 2 2001 Preston Brown <pbrown@redhat.com> 2.05-3
|
1593
|
+
- bashrc moved to setup package
|
1594
|
+
|
1595
|
+
* Tue Apr 24 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-2
|
1596
|
+
- bash comes with its own copy of readline... Add the patches we're
|
1597
|
+
applying in the readline package.
|
1598
|
+
|
1599
|
+
* Tue Apr 24 2001 Bernhard Rosenkraenzer <bero@redhat.com> 2.05-1
|
1600
|
+
- Update to 2.05
|
1601
|
+
- Change PROMPT_COMMAND in bashrc for xterms
|
1602
|
+
to something less space consuming (#24159)
|
1603
|
+
- Provide plugs for alternate prompt commands (#30634), but don't
|
1604
|
+
default to them
|
1605
|
+
|
1606
|
+
* Mon Mar 19 2001 Preston Brown <pbrown@redhat.com>
|
1607
|
+
- add default aliases for 'dir' and 'df' to have human readable output
|
1608
|
+
|
1609
|
+
* Wed Feb 28 2001 Matt Wilson <msw@redhat.com>
|
1610
|
+
- don't Prereq: /sbin/install-info!
|
1611
|
+
|
1612
|
+
* Tue Feb 27 2001 Preston Brown <pbrown@redhat.com>
|
1613
|
+
- noreplace config files
|
1614
|
+
- don't own /etc/skel directory
|
1615
|
+
|
1616
|
+
* Wed Feb 22 2001 Harald Hoyer <harald@redhat.de>
|
1617
|
+
- changed /etc/bashrc to work with backspace = 0177 (rxvt)
|
1618
|
+
|
1619
|
+
* Wed Feb 07 2001 Florian La Roche <Florian.LaRoche@redhat.de>
|
1620
|
+
- changed /etc/skel/.bash_profile to "unset USERNAME"
|
1621
|
+
|
1622
|
+
* Mon Feb 5 2001 Yukihiro Nakai <ynakai@redhat.com>
|
1623
|
+
- Delete Japanese resources from dot-bashrc
|
1624
|
+
and move them to each package.
|
1625
|
+
|
1626
|
+
* Fri Dec 15 2000 Yukihiro Nakai <ynakai@redhat.com>
|
1627
|
+
- Add Japanese resource to dot-bashrc
|
1628
|
+
|
1629
|
+
* Mon Dec 11 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1630
|
+
- rebuild to get rid of 0777 doc dirs
|
1631
|
+
|
1632
|
+
* Thu Nov 16 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1633
|
+
- restore the ^Hs in documentation, they're highlighting sequences
|
1634
|
+
for less (#20654)
|
1635
|
+
|
1636
|
+
* Fri Sep 15 2000 Florian La Roche <Florian.LaRoche@redhat.de>
|
1637
|
+
- bash-2.04-export.patch is reported to fix compilation
|
1638
|
+
of older glibc-2.1 sources
|
1639
|
+
|
1640
|
+
* Tue Aug 22 2000 Matt Wilson <msw@redhat.com>
|
1641
|
+
- fixed the summary of bash-doc to use %%{version} instead of "2.03"
|
1642
|
+
|
1643
|
+
* Tue Aug 8 2000 Bill Nottingham <notting@redhat.com>
|
1644
|
+
- 'exit' in bashrc is very bad.
|
1645
|
+
|
1646
|
+
* Tue Aug 8 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1647
|
+
- minor bashrc fix (Bug #8518)
|
1648
|
+
|
1649
|
+
* Mon Jul 17 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1650
|
+
- Don't use tput etc. in bashrc if /usr isn't available (Bug #14116)
|
1651
|
+
|
1652
|
+
* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
|
1653
|
+
- automatic rebuild
|
1654
|
+
|
1655
|
+
* Thu Jun 22 2000 Bill Nottingham <notting@redhat.com>
|
1656
|
+
- fix for some IA-64 issues from Stephane Eranian
|
1657
|
+
|
1658
|
+
* Thu Jun 15 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1659
|
+
- Fix summary and description, they had old version numbers (Bug #12092)
|
1660
|
+
|
1661
|
+
* Tue Jun 6 2000 Bill Nottingham <notting@redhat.com>
|
1662
|
+
- add /etc/skel/.bash* ; obsolete etcskel
|
1663
|
+
|
1664
|
+
* Tue May 2 2000 Bill Nottingham <notting@redhat.com>
|
1665
|
+
- fix for shell functions on 64-bit architectures...
|
1666
|
+
|
1667
|
+
* Wed Mar 29 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1668
|
+
- Add some backwards compatibility (for i in ; do something; done)
|
1669
|
+
|
1670
|
+
* Tue Mar 21 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1671
|
+
- 2.04 final
|
1672
|
+
- remove the echo, pwd, test and kill man pages from the package,
|
1673
|
+
we're getting them from sh-utils
|
1674
|
+
|
1675
|
+
* Sun Mar 19 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
1676
|
+
- 2.04beta5
|
1677
|
+
- adapt patches
|
1678
|
+
- Fix up bashrc
|
1679
|
+
- Don't put in bashrc1, this should be done by the bash1 package
|
1680
|
+
- use install -c instead of plain install to work on *BSD
|
1681
|
+
- remove the collected patches - they're now in the base version.
|
1682
|
+
- make compressed man pages optional
|
1683
|
+
|
1684
|
+
* Thu Mar 16 2000 Florian La Roche <Florian.LaRoche@redhat.com>
|
1685
|
+
- add some collected patches for bash2
|
1686
|
+
- change it over to be the main bash package
|
1687
|
+
- install man-pages root:root
|
1688
|
+
- obsolete bash2, bash2-doc
|
1689
|
+
|
1690
|
+
* Wed Feb 02 2000 Cristian Gafton <gafton@redhat.com>
|
1691
|
+
- man pages are compressed
|
1692
|
+
- fix description
|
1693
|
+
|
1694
|
+
* Thu Dec 2 1999 Ken Estes <kestes@staff.mail.com>
|
1695
|
+
- updated patch to detect what executables are required by a script.
|
1696
|
+
|
1697
|
+
* Fri Sep 14 1999 Dale Lovelace <dale@redhat.com>
|
1698
|
+
- Remove annoying ^H's from documentation
|
1699
|
+
|
1700
|
+
* Fri Jul 16 1999 Ken Estes <kestes@staff.mail.com>
|
1701
|
+
- patch to detect what executables are required by a script.
|
1702
|
+
|
1703
|
+
* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
|
1704
|
+
- auto rebuild in the new build environment (release 4)
|
1705
|
+
|
1706
|
+
* Fri Mar 19 1999 Jeff Johnson <jbj@redhat.com>
|
1707
|
+
- strip binaries.
|
1708
|
+
- include bash-doc correctly.
|
1709
|
+
|
1710
|
+
* Thu Mar 18 1999 Preston Brown <pbrown@redhat.com>
|
1711
|
+
- fixed post/postun /etc/shells work.
|
1712
|
+
|
1713
|
+
* Thu Mar 18 1999 Cristian Gafton <gafton@redhat.com>
|
1714
|
+
- updated again text in the spec file
|
1715
|
+
|
1716
|
+
* Mon Feb 22 1999 Jeff Johnson <jbj@redhat.com>
|
1717
|
+
- updated text in spec file.
|
1718
|
+
- update to 2.03.
|
1719
|
+
|
1720
|
+
* Fri Feb 12 1999 Cristian Gafton <gafton@redhat.com>
|
1721
|
+
- build it as bash2 instead of bash
|
1722
|
+
|
1723
|
+
* Tue Feb 9 1999 Bill Nottingham <notting@redhat.com>
|
1724
|
+
- set 'NON_INTERACTIVE_LOGIN_SHELLS' so profile gets read
|
1725
|
+
|
1726
|
+
* Thu Jan 14 1999 Jeff Johnson <jbj@redhat.com>
|
1727
|
+
- rename man pages in bash-doc to avoid packaging conflicts (#606).
|
1728
|
+
|
1729
|
+
* Wed Dec 02 1998 Cristian Gafton <gafton@redhat.com>
|
1730
|
+
- patch for the arm
|
1731
|
+
- use $RPM_ARCH-redhat-linux as the build target
|
1732
|
+
|
1733
|
+
* Tue Oct 6 1998 Bill Nottingham <notting@redhat.com>
|
1734
|
+
- rewrite %%pre, axe %%postun (to avoid prereq loops)
|
1735
|
+
|
1736
|
+
* Wed Aug 19 1998 Jeff Johnson <jbj@redhat.com>
|
1737
|
+
- resurrect for RH 6.0.
|
1738
|
+
|
1739
|
+
* Sun Jul 26 1998 Jeff Johnson <jbj@redhat.com>
|
1740
|
+
- update to 2.02.1
|
1741
|
+
|
1742
|
+
* Thu Jun 11 1998 Jeff Johnson <jbj@redhat.com>
|
1743
|
+
- Package for 5.2.
|
1744
|
+
|
1745
|
+
* Mon Apr 20 1998 Ian Macdonald <ianmacd@xs4all.nl>
|
1746
|
+
- added POSIX.NOTES doc file
|
1747
|
+
- some extraneous doc files removed
|
1748
|
+
- minor .spec file changes
|
1749
|
+
|
1750
|
+
* Sun Apr 19 1998 Ian Macdonald <ianmacd@xs4all.nl>
|
1751
|
+
- upgraded to version 2.02
|
1752
|
+
- Alpha, MIPS & Sparc patches removed due to lack of test platforms
|
1753
|
+
- glibc & signal patches no longer required
|
1754
|
+
- added documentation subpackage (doc)
|
1755
|
+
|
1756
|
+
* Fri Nov 07 1997 Donnie Barnes <djb@redhat.com>
|
1757
|
+
- added signal handling patch from Dean Gaudet <dgaudet@arctic.org> that
|
1758
|
+
is based on a change made in bash 2.0. Should fix some early exit
|
1759
|
+
problems with suspends and fg.
|
1760
|
+
|
1761
|
+
* Mon Oct 20 1997 Donnie Barnes <djb@redhat.com>
|
1762
|
+
- added %%clean
|
1763
|
+
|
1764
|
+
* Mon Oct 20 1997 Erik Troan <ewt@redhat.com>
|
1765
|
+
- added comment explaining why install-info isn't used
|
1766
|
+
- added mips patch
|
1767
|
+
|
1768
|
+
* Fri Oct 17 1997 Donnie Barnes <djb@redhat.com>
|
1769
|
+
- added BuildRoot
|
1770
|
+
|
1771
|
+
* Tue Jun 03 1997 Erik Troan <ewt@redhat.com>
|
1772
|
+
- built against glibc
|