commit bash-20140822 snapshot

This commit is contained in:
Chet Ramey
2014-08-29 09:16:01 -04:00
parent 581fe5894c
commit 138f0d61d5
6 changed files with 8437 additions and 1 deletions
+13
View File
@@ -6552,3 +6552,16 @@ jobs.c
shell.c
- shell_reinitialize: reset running_in_background back to 0
8/24
----
execute_cmd.c
- {execute_connection,execute_command_internal}: make sure that
asynchronous commands always set $? to 0 and are not affected by the
command's exit status being inverted using `!'. Fixes bug reported
by Vincent Lefevre <vincent@vinc17.net>
lib/readline/display.c
- rl_message: call vsnprintf with full msg_bufsiz, since it counts
one fewer than the buffer length passed as an argument. Bug report
and fix from Dylan Cali <calid1984@gmail.com>
+60
View File
@@ -6505,3 +6505,63 @@ subst.c
is no way for it to return the index that should be used, and the
rest of the function assumes that IND is valid if W_ARRAYIND is set.
Fixes bug reported by Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
8/2
---
parse.y
- read_token_word: if we read a character that will end a command
substitution, don't skip over quoted newlines when we read an
additional character to figure out whether it's a two-character
token. This lets the higher layers deal with quoted newlines after
the command substitution. Fixes bug reported by EmanueL Czirai
<amanual@riseup.net>
8/11
----
execute_cmd.c
- execute_pipeline: check whether lastpipe_jid corresponds to a valid
job before calling append_process, for the same reason as fix from
6/19. Fixes bug reported by <lolilolicon@gmail.com>
8/12
----
lib/sh/unicode.c
- stub_charset: use strncpy instead of strcpy because we are copying
into a local fixed-length buffer. Fixes vulnerability reported by
<romerox.adrian@gmail.com>
execute_cmd.c
- execute_pipeline: if we don't call append_process, call
wait_for_single_pid to get the status of `lastpid', since that will
check the status of already-reaped processes. Fixes spurious error
message about non-existent process from fix of 8/11
8/15
----
jobs.c
- running_in_background: new variable, keeps track of whether or not we
are running in the background (not perfect yet)
- initialize_job_control: even if we are not turning on job control,
get the terminal pgrp so we can use it later
- {set_job_control,initialize_job_control}: set running_in_background
to 1 if terminal pgrp != shell pgrp
- {stop_pipeline,make_child,wait_for}: if we are running in the
background, don't mess with the terminal's process group; assume that
the parent shell will do that. Fixes bug reprted by Greg Wooledge
<wooledg@eeg.ccf.org>
shell.c
- shell_reinitialize: reset running_in_background back to 0
8/24
----
execute_cmd.c
- {execute_connection,execute_command_internal}: make sure that
asynchronous commands always set $? to 0 and are not affected by the
command's exit status being inverted using `!'. Fixes bug reported
by Vincent Lefevre <vincent@vinc17.net>
lib/readline/display.c
- rl_message: call vsnprintf with full msg_bufsiz, since it counts
one fewer than the buffer length passed as an argument. Bug report
and fix from Dylan Cali <calid1984@gmail.com>
+11
View File
@@ -819,6 +819,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (asynchronous)
{
DESCRIBE_PID (last_made_pid);
exec_result = EXECUTION_SUCCESS;
invert = 0; /* async commands always succeed */
}
else
#if !defined (JOB_CONTROL)
@@ -958,6 +960,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
case cm_connection:
exec_result = execute_connection (command, asynchronous,
pipe_in, pipe_out, fds_to_close);
if (asynchronous)
invert = 0; /* XXX */
break;
#if defined (DPAREN_ARITHMETIC)
@@ -2542,6 +2547,12 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
line_number_for_err_trap = line_number;
exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
if (asynchronous)
{
exec_result = EXECUTION_SUCCESS;
invert = 0;
}
if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
+5522
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2246,7 +2246,7 @@ rl_message (va_alist)
msg_buf = xmalloc (msg_bufsiz = 128);
#if defined (HAVE_VSNPRINTF)
bneed = vsnprintf (msg_buf, msg_bufsiz - 1, format, args);
bneed = vsnprintf (msg_buf, msg_bufsiz, format, args);
if (bneed >= msg_bufsiz - 1)
{
msg_bufsiz = bneed + 1;
File diff suppressed because it is too large Load Diff