bash update to 4.4.18

This commit is contained in:
Ertuğrul Erata
2018-11-28 23:42:33 +03:00
parent 37c6ebb67f
commit 55ea0fb002
14 changed files with 762 additions and 1 deletions
@@ -0,0 +1,31 @@
diff --git a/execute_cmd.h b/execute_cmd.h
--- a/execute_cmd.h
+++ b/execute_cmd.h
@@ -37,6 +37,9 @@ struct func_array_state
};
#endif
+/* Variables delared in execute_cmd.c, used by many other files */
+extern int executing_command_builtin;
+
extern struct fd_bitmap *new_fd_bitmap __P((int));
extern void dispose_fd_bitmap __P((struct fd_bitmap *));
extern void close_fd_bitmap __P((struct fd_bitmap *));
diff --git a/subst.c b/subst.c
--- a/subst.c
+++ b/subst.c
@@ -10676,11 +10676,12 @@ expand_word_list_internal (list, eflags)
tint = do_word_assignment (temp_list->word, 0);
this_command_name = savecmd;
/* Variable assignment errors in non-interactive shells
- running in Posix.2 mode cause the shell to exit. */
+ running in Posix.2 mode cause the shell to exit, unless
+ they are being run by the `command' builtin. */
if (tint == 0)
{
last_command_exit_value = EXECUTION_FAILURE;
- if (interactive_shell == 0 && posixly_correct)
+ if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0)
exp_jump_to_top_level (FORCE_EOF);
else
exp_jump_to_top_level (DISCARD);
@@ -0,0 +1,18 @@
diff --git a/parse.y b/parse.y
--- a/parse.y
+++ b/parse.y
@@ -4011,11 +4011,13 @@ eof_error:
tflags |= LEX_RESWDOK;
lex_rwlen = 0;
}
- else
+ else if (shellmeta (ch) == 0)
{
tflags &= ~LEX_RESWDOK;
/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/
}
+ else /* can't be in a reserved word any more */
+ lex_rwlen = 0;
}
else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
; /* don't modify LEX_RESWDOK if we're starting a comment */
@@ -0,0 +1,203 @@
diff --git a/builtins/fc.def b/builtins/fc.def
index fe16471..98c53db 100644
--- a/builtins/fc.def
+++ b/builtins/fc.def
@@ -423,6 +423,7 @@ fc_builtin (list)
{
sh_wrerror ();
fclose (stream);
+ FREE (fn);
return (EXECUTION_FAILURE);
}
fclose (stream);
diff --git a/execute_cmd.c b/execute_cmd.c
index 63a332a..15b5e19 100644
--- a/execute_cmd.c
+++ b/execute_cmd.c
@@ -2196,8 +2196,10 @@ coproc_setvars (cp)
if (v == 0)
{
v = find_variable_nameref_for_create (cp->c_name, 1);
- if (v == INVALID_NAMEREF_VALUE)
- return;
+ if (v == INVALID_NAMEREF_VALUE) {
+ free (namevar);
+ return;
+ }
if (v && nameref_p (v))
{
free (cp->c_name);
@@ -2210,6 +2212,7 @@ coproc_setvars (cp)
{
if (readonly_p (v))
err_readonly (cp->c_name);
+ free (namevar);
return;
}
if (v == 0)
@@ -5528,7 +5531,6 @@ shell_execve (command, args, env)
char *interp;
int ilen;
- close (fd);
interp = getinterp (sample, sample_len, (int *)NULL);
ilen = strlen (interp);
errno = i;
diff --git a/expr.c b/expr.c
index 172964a..5dc57c0 100644
--- a/expr.c
+++ b/expr.c
@@ -207,7 +207,8 @@ static intmax_t exp5 __P((void));
static intmax_t exp4 __P((void));
static intmax_t expshift __P((void));
static intmax_t exp3 __P((void));
-static intmax_t exp2 __P((void));
+/* Avoid name clash with standard exp2 */
+static intmax_t bash_exp2 __P((void));
static intmax_t exppower __P((void));
static intmax_t exp1 __P((void));
static intmax_t exp0 __P((void));
@@ -809,14 +810,14 @@ exp3 ()
{
register intmax_t val1, val2;
- val1 = exp2 ();
+ val1 = bash_exp2 ();
while ((curtok == PLUS) || (curtok == MINUS))
{
int op = curtok;
readtok ();
- val2 = exp2 ();
+ val2 = bash_exp2 ();
if (op == PLUS)
val1 += val2;
@@ -828,7 +829,7 @@ exp3 ()
}
static intmax_t
-exp2 ()
+bash_exp2 ()
{
register intmax_t val1, val2;
#if defined (HAVE_IMAXDIV)
diff --git a/lib/glob/glob.c b/lib/glob/glob.c
index 7f6eafe..c018e29 100644
--- a/lib/glob/glob.c
+++ b/lib/glob/glob.c
@@ -576,7 +576,7 @@ glob_vector (pat, dir, flags)
register char *nextname, *npat, *subdir;
unsigned int count;
int lose, skip, ndirs, isdir, sdlen, add_current, patlen;
- register char **name_vector;
+ register char **name_vector = NULL;
register unsigned int i;
int mflags; /* Flags passed to strmatch (). */
int pflags; /* flags passed to sh_makepath () */
@@ -894,7 +894,7 @@ glob_vector (pat, dir, flags)
}
/* Don't call QUIT; here; let higher layers deal with it. */
-
+ FREE (name_vector);
return ((char **)NULL);
}
diff --git a/lib/sh/pathcanon.c b/lib/sh/pathcanon.c
index f19bd55..2a565d6 100644
--- a/lib/sh/pathcanon.c
+++ b/lib/sh/pathcanon.c
@@ -227,7 +227,7 @@ sh_canonpath (path, flags)
if (result[2] == '\0') /* short-circuit for bare `//' */
result[1] = '\0';
else
- strcpy (result, result + 1);
+ memmove(result, result + 1, strlen(result + 1) + 1);
}
return (result);
diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c
index 26016b7..b64c4cd 100644
--- a/lib/sh/pathphys.c
+++ b/lib/sh/pathphys.c
@@ -245,7 +245,7 @@ error:
if (result[2] == '\0') /* short-circuit for bare `//' */
result[1] = '\0';
else
- strcpy (result, result + 1);
+ memmove(result, result + 1, strlen(result + 1) + 1);
}
return (result);
diff --git a/shell.c b/shell.c
index b43de50..4aae182 100644
--- a/shell.c
+++ b/shell.c
@@ -1948,8 +1948,10 @@ show_shell_usage (fp, extra)
fputs (_("\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"), fp);
for (i = 0, set_opts = 0; shell_builtins[i].name; i++)
- if (STREQ (shell_builtins[i].name, "set"))
+ if (STREQ (shell_builtins[i].name, "set")) {
set_opts = savestring (shell_builtins[i].short_doc);
+ break;
+ }
if (set_opts)
{
s = strchr (set_opts, '[');
diff --git a/subst.c b/subst.c
index 5f3e41e..7574617 100644
--- a/subst.c
+++ b/subst.c
@@ -5182,8 +5182,11 @@ parameter_list_transform (xc, itype, quoted)
list = list_rest_of_args ();
if (list == 0)
return ((char *)NULL);
- if (xc == 'A')
- return (pos_params_assignment (list, itype, quoted));
+ if (xc == 'A') {
+ ret = pos_params_assignment (list, itype, quoted);
+ dispose_words (list);
+ return (ret);
+ }
ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted);
dispose_words (list);
return (ret);
@@ -6813,6 +6816,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
{
report_error (_("%s: invalid indirect expansion"), name);
free (vname);
+ free (t1);
dispose_word (w);
return &expand_wdesc_error;
}
@@ -6820,6 +6824,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
{
report_error (_("%s: invalid variable name"), vname);
free (vname);
+ free (t1);
dispose_word (w);
return &expand_wdesc_error;
}
diff --git a/support/man2html.c b/support/man2html.c
index 6ba5061..1d9e376 100644
--- a/support/man2html.c
+++ b/support/man2html.c
@@ -522,6 +522,7 @@ read_man_page(char *filename)
man_buf[buf_size] = '\n';
man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0';
} else {
+ free (man_buf);
man_buf = NULL;
}
fclose(man_stream);
@@ -2562,7 +2563,6 @@ scan_request(char *c)
h = name;
if (stat(h, &stbuf) != -1)
l = stbuf.st_size;
- buf = stralloc(l + 4);
#if NOCGI
if (!out_length) {
char *t, *s;
@@ -0,0 +1,11 @@
diff --git a/parse.y b/parse.y
index 85f1c4f..9d1cdf8 100644
--- a/parse.y
+++ b/parse.y
@@ -1453,6 +1453,7 @@ yy_readline_get ()
old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
}
+ sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */
current_readline_line = readline (current_readline_prompt ?
current_readline_prompt : "");
@@ -0,0 +1,11 @@
diff --git a/config.h.in b/config.h.in
--- a/config.h.in
+++ b/config.h.in
@@ -449,6 +449,7 @@
#undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
#undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC
+#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
#undef HAVE_STRUCT_STAT_ST_ATIMENSEC
@@ -0,0 +1,119 @@
From bc007799f0e1362100375bb95d952d28de4c62fb Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Fri, 27 Jan 2017 11:25:44 -0500
Subject: [PATCH] Bash-4.4 patch 12
---
patchlevel.h | 2 +-
subst.c | 32 ++++++++++++++++++++------------
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/patchlevel.h b/patchlevel.h
index 772676c..93dbe0d 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 11
+#define PATCHLEVEL 12
#endif /* _PATCHLEVEL_H_ */
diff --git a/subst.c b/subst.c
index 027a13e..dbf0157 100644
--- a/subst.c
+++ b/subst.c
@@ -2825,11 +2825,15 @@ list_string (string, separators, quoted)
/* Parse a single word from STRING, using SEPARATORS to separate fields.
ENDPTR is set to the first character after the word. This is used by
- the `read' builtin. This is never called with SEPARATORS != $IFS;
- it should be simplified.
+ the `read' builtin.
+
+ This is never called with SEPARATORS != $IFS, and takes advantage of that.
XXX - this function is very similar to list_string; they should be
combined - XXX */
+
+#define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0)
+
char *
get_word_from_string (stringp, separators, endptr)
char **stringp, *separators, **endptr;
@@ -2837,6 +2841,7 @@ get_word_from_string (stringp, separators, endptr)
register char *s;
char *current_word;
int sindex, sh_style_split, whitesep, xflags;
+ unsigned char local_cmap[UCHAR_MAX+1]; /* really only need single-byte chars here */
size_t slen;
if (!stringp || !*stringp || !**stringp)
@@ -2846,20 +2851,23 @@ get_word_from_string (stringp, separators, endptr)
separators[1] == '\t' &&
separators[2] == '\n' &&
separators[3] == '\0';
- for (xflags = 0, s = ifs_value; s && *s; s++)
+ memset (local_cmap, '\0', sizeof (local_cmap));
+ for (xflags = 0, s = separators; s && *s; s++)
{
if (*s == CTLESC) xflags |= SX_NOCTLESC;
if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
+ local_cmap[(unsigned char)*s] = 1; /* local charmap of separators */
}
s = *stringp;
slen = 0;
/* Remove sequences of whitespace at the beginning of STRING, as
- long as those characters appear in IFS. */
- if (sh_style_split || !separators || !*separators)
+ long as those characters appear in SEPARATORS. This happens if
+ SEPARATORS == $' \t\n' or if IFS is unset. */
+ if (sh_style_split || separators == 0)
{
- for (; *s && spctabnl (*s) && isifs (*s); s++);
+ for (; *s && spctabnl (*s) && islocalsep (*s); s++);
/* If the string is nothing but whitespace, update it and return. */
if (!*s)
@@ -2878,9 +2886,9 @@ get_word_from_string (stringp, separators, endptr)
This obeys the field splitting rules in Posix.2. */
sindex = 0;
- /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
- unless multibyte chars are possible. */
- slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1;
+ /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
+ possible, but need it in string_extract_verbatim for bounds checking */
+ slen = STRLEN (s);
current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags);
/* Set ENDPTR to the first character after the end of the word. */
@@ -2899,19 +2907,19 @@ get_word_from_string (stringp, separators, endptr)
/* Now skip sequences of space, tab, or newline characters if they are
in the list of separators. */
- while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
+ while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
sindex++;
/* If the first separator was IFS whitespace and the current character is
a non-whitespace IFS character, it should be part of the current field
delimiter, not a separate delimiter that would result in an empty field.
Look at POSIX.2, 3.6.5, (3)(b). */
- if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
+ if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex]))
{
sindex++;
/* An IFS character that is not IFS white space, along with any adjacent
IFS white space, shall delimit a field. */
- while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
+ while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
sindex++;
}
--
2.9.3
@@ -0,0 +1,38 @@
From 1aef9c7b55dcef4af239caf93e01419e1c8e04ad Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Mon, 29 Jan 2018 16:03:33 -0500
Subject: [PATCH] Bash-4.4 patch 13
---
patchlevel.h | 2 +-
redir.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/patchlevel.h b/patchlevel.h
index 93dbe0db..779671cd 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 12
+#define PATCHLEVEL 13
#endif /* _PATCHLEVEL_H_ */
diff --git a/redir.c b/redir.c
index 25488eaf..1858b0b0 100644
--- a/redir.c
+++ b/redir.c
@@ -469,6 +469,8 @@ here_document_to_fd (redirectee, ri)
return (fd);
}
+ SET_CLOSE_ON_EXEC (fd);
+
errno = r = 0; /* XXX */
/* write_here_document returns 0 on success, errno on failure. */
if (redirectee->word)
--
2.13.6
@@ -0,0 +1,85 @@
From 2fb21d75bfddd724b0e45d4a51455a166467e496 Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Mon, 29 Jan 2018 16:03:47 -0500
Subject: [PATCH] Bash-4.4 patch 14
---
execute_cmd.c | 19 ++++++++++++++++---
patchlevel.h | 2 +-
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/execute_cmd.c b/execute_cmd.c
index 2a3df6d6..76a80766 100644
--- a/execute_cmd.c
+++ b/execute_cmd.c
@@ -726,6 +726,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
{
ofifo = num_fifos ();
ofifo_list = copy_fifo_list ((int *)&osize);
+ begin_unwind_frame ("internal_fifos");
+ add_unwind_protect (xfree, ofifo_list);
saved_fifo = 1;
}
else
@@ -741,7 +743,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
dispose_exec_redirects ();
#if defined (PROCESS_SUBSTITUTION)
if (saved_fifo)
- free ((void *)ofifo_list);
+ {
+ free ((void *)ofifo_list);
+ discard_unwind_frame ("internal_fifos");
+ }
#endif
return (last_command_exit_value = EXECUTION_FAILURE);
}
@@ -1060,6 +1065,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (nfifo > ofifo)
close_new_fifos ((char *)ofifo_list, osize);
free ((void *)ofifo_list);
+ discard_unwind_frame ("internal_fifos");
}
#endif
@@ -4977,9 +4983,14 @@ execute_builtin_or_function (words, builtin, var, redirects,
char *ofifo_list;
#endif
-#if defined (PROCESS_SUBSTITUTION)
+#if defined (PROCESS_SUBSTITUTION)
+ begin_unwind_frame ("saved_fifos");
+ /* If we return, we longjmp and don't get a chance to restore the old
+ fifo list, so we add an unwind protect to free it */
ofifo = num_fifos ();
ofifo_list = copy_fifo_list (&osize);
+ if (ofifo_list)
+ add_unwind_protect (xfree, ofifo_list);
#endif
if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
@@ -5063,7 +5074,9 @@ execute_builtin_or_function (words, builtin, var, redirects,
nfifo = num_fifos ();
if (nfifo > ofifo)
close_new_fifos (ofifo_list, osize);
- free (ofifo_list);
+ if (ofifo_list)
+ free (ofifo_list);
+ discard_unwind_frame ("saved_fifos");
#endif
return (result);
diff --git a/patchlevel.h b/patchlevel.h
index 779671cd..09a3cc84 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 13
+#define PATCHLEVEL 14
#endif /* _PATCHLEVEL_H_ */
--
2.13.6
@@ -0,0 +1,38 @@
From 9cce630e80008e74fa9a1d9408367341caf363f2 Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Mon, 29 Jan 2018 16:04:01 -0500
Subject: [PATCH] Bash-4.4 patch 15
---
patchlevel.h | 2 +-
subst.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/patchlevel.h b/patchlevel.h
index 09a3cc84..6e9ed3fc 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 14
+#define PATCHLEVEL 15
#endif /* _PATCHLEVEL_H_ */
diff --git a/subst.c b/subst.c
index dbf0157e..fc00cab0 100644
--- a/subst.c
+++ b/subst.c
@@ -5906,6 +5906,8 @@ process_substitute (string, open_for_read_in_child)
parent. */
expanding_redir = 0;
+ remove_quoted_escapes (string);
+
subshell_level++;
result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
subshell_level--;
--
2.13.6
@@ -0,0 +1,68 @@
From c9f1b04651dae16e33f0aa8974c5122e26b362ae Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Mon, 29 Jan 2018 16:04:20 -0500
Subject: [PATCH] Bash-4.4 patch 16
---
lib/sh/zread.c | 23 +++++++++--------------
patchlevel.h | 2 +-
2 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/lib/sh/zread.c b/lib/sh/zread.c
index 868f9705..496f20b8 100644
--- a/lib/sh/zread.c
+++ b/lib/sh/zread.c
@@ -37,7 +37,10 @@ extern int errno;
# define SEEK_CUR 1
#endif
+extern int executing_builtin;
+
extern void check_signals_and_traps (void);
+extern void check_signals (void);
extern int signal_is_trapped (int);
/* Read LEN bytes from FD into BUF. Retry the read on EINTR. Any other
@@ -50,21 +53,13 @@ zread (fd, buf, len)
{
ssize_t r;
-#if 0
-#if defined (HAVE_SIGINTERRUPT)
- if (signal_is_trapped (SIGCHLD))
- siginterrupt (SIGCHLD, 1);
-#endif
-#endif
-
while ((r = read (fd, buf, len)) < 0 && errno == EINTR)
- check_signals_and_traps (); /* XXX - should it be check_signals()? */
-
-#if 0
-#if defined (HAVE_SIGINTERRUPT)
- siginterrupt (SIGCHLD, 0);
-#endif
-#endif
+ /* XXX - bash-5.0 */
+ /* We check executing_builtin and run traps here for backwards compatibility */
+ if (executing_builtin)
+ check_signals_and_traps (); /* XXX - should it be check_signals()? */
+ else
+ check_signals ();
return r;
}
diff --git a/patchlevel.h b/patchlevel.h
index 6e9ed3fc..9074f4dd 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 15
+#define PATCHLEVEL 16
#endif /* _PATCHLEVEL_H_ */
--
2.13.6
@@ -0,0 +1,41 @@
From b3a5ec8dd510a68dc850f3f516c0cf9afd87451f Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Mon, 29 Jan 2018 16:04:37 -0500
Subject: [PATCH] Bash-4.4 patch 17
---
builtins/read.def | 5 +++++
patchlevel.h | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/builtins/read.def b/builtins/read.def
index 33821f3f..803bea35 100644
--- a/builtins/read.def
+++ b/builtins/read.def
@@ -690,6 +690,11 @@ add_char:
input_string[i] = '\0';
CHECK_ALRM;
+#if defined (READLINE)
+ if (edit)
+ free (rlbuf);
+#endif
+
if (retval < 0)
{
t_errno = errno;
diff --git a/patchlevel.h b/patchlevel.h
index 9074f4dd..98e714da 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 16
+#define PATCHLEVEL 17
#endif /* _PATCHLEVEL_H_ */
--
2.13.6
@@ -0,0 +1,38 @@
From eb78197af36bb0fb95493ebf8fce104be6832ec9 Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Mon, 29 Jan 2018 16:04:56 -0500
Subject: [PATCH] Bash-4.4 patch 18
---
builtins/read.def | 2 +-
patchlevel.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/builtins/read.def b/builtins/read.def
index 803bea35..b54b3af6 100644
--- a/builtins/read.def
+++ b/builtins/read.def
@@ -610,7 +610,7 @@ read_builtin (list)
}
CHECK_ALRM;
-
+ QUIT; /* in case we didn't call check_signals() */
#if defined (READLINE)
}
#endif
diff --git a/patchlevel.h b/patchlevel.h
index 98e714da..f0ee56e4 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 17
+#define PATCHLEVEL 18
#endif /* _PATCHLEVEL_H_ */
--
2.13.6
@@ -0,0 +1,40 @@
From b0776d8c49ab4310fa056ce1033985996c5b9807 Mon Sep 17 00:00:00 2001
From: Chet Ramey <chet.ramey@case.edu>
Date: Tue, 6 Feb 2018 16:22:34 -0500
Subject: [PATCH] Bash-4.4 patch 19
---
lib/readline/display.c | 4 +++-
patchlevel.h | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/readline/display.c b/lib/readline/display.c
index 41fb0531..2d2e768a 100644
--- a/lib/readline/display.c
+++ b/lib/readline/display.c
@@ -771,7 +771,9 @@ rl_redisplay ()
appear in the first and last lines of the prompt */
wadjust = (newlines == 0)
? prompt_invis_chars_first_line
- : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line);
+ : ((newlines == prompt_lines_estimate)
+ ? (wrap_offset - prompt_invis_chars_first_line)
+ : 0);
/* fix from Darin Johnson <darin@acuson.com> for prompt string with
invisible characters that is longer than the screen width. The
diff --git a/patchlevel.h b/patchlevel.h
index f0ee56e4..a711c495 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 18
+#define PATCHLEVEL 19
#endif /* _PATCHLEVEL_H_ */
--
2.13.6
+21 -1
View File
@@ -28,7 +28,14 @@
<Patch level="1">official/bash-4.4-patch-8.patch</Patch>
<Patch level="1">official/bash-4.4-patch-9.patch</Patch>
<Patch level="1">official/bash-4.4-patch-10.patch</Patch>
<Patch level="1">official/bash-4.4-patch-11.patch</Patch>
<Patch level="1">official/bash-4.4-patch-11.patch</Patch>
<Patch level="1">official/bash-4.4-patch-12.patch</Patch>
<Patch level="1">official/bash-4.4-patch-13.patch</Patch>
<Patch level="1">official/bash-4.4-patch-14.patch</Patch>
<Patch level="1">official/bash-4.4-patch-15.patch</Patch>
<Patch level="1">official/bash-4.4-patch-16.patch</Patch>
<Patch level="1">official/bash-4.4-patch-17.patch</Patch>
<Patch level="1">official/bash-4.4-patch-18.patch</Patch>
<!-- Fedora patches -->
<Patch level="1">fedora/bash-2.02-security.patch</Patch>
@@ -58,6 +65,12 @@
<Patch level="1">fedora/bash-4.3-noecho.patch</Patch>
<Patch level="1">fedora/bash-4.3-memleak-lc_all.patch</Patch>
<Patch level="1">fedora/bash-4.4-no-loadable-builtins.patch</Patch>
<Patch level="1">fedora/bash-4.4-unset-nonblock-stdin.patch</Patch>
<Patch level="1">fedora/bash-4.4-assignment-error.patch</Patch>
<Patch level="1">fedora/bash-4.5-test-modification-time.patch</Patch>
<Patch level="1">fedora/bash-4.4-case-in-command-subst.patch</Patch>
<Patch level="1">fedora/bash-4.4-coverity.patch</Patch>
</Patches>
</Source>
@@ -82,6 +95,13 @@
</Package>
<History>
<Update release="7">
<Date>2018-11-28</Date>
<Version>4.4.18</Version>
<Comment>Version bump.</Comment>
<Name>Ertuğrul Erata</Name>
<Email>ertugrulerata@gmail.com</Email>
</Update>
<Update release="6">
<Date>2018-07-15</Date>
<Version>4.4.11</Version>