Hello Bash-bugs,
The patch bash42-018 to allow execute_cmd.c that is supposed to allow it
to compile with out JOB_CONTROL defined has a bug in it.
It is leaving the lastpipe_flag uninitialized. This is a problem
because later in the module it is tested.
*** ../bash-4.2-patched/execute_cmd.c 2011-02-09 17:32:25.000000000 -0500
--- execute_cmd.c 2011-11-06 15:12:48.000000000 -0500
***************
*** 2197,2200 ****
--- 2315,2319 ----
cmd->flags |= CMD_IGNORE_RETURN;
+ #if defined (JOB_CONTROL)
lastpipe_flag = 0;
begin_unwind_frame ("lastpipe-exec");
The simple fix of moving the "#if defined (JOBCONTROL)" line below the
"lastpipe_flag = 0;" may not be the ideal patch.
This is because JOB_CONTROL undefined, the entire if block lower below
"QUIT;" is never executed, as lastpipe_flag is always 0.
Which means that it is kind of useless to have #if defined(JOB_CONTROL)
blocks inside of it. If this is the intended logic flow, then the
entire "if (lastpipe_flag)" block should be conditionally compiled out.
Doing that and leaving the definition of the lastpipe_flag undefined as
in the original patch will still result in a compiler diagnostic about
an unused variable.
So that would need an #if defined (JOBCONTROL) needed around the
declaration.
So what should be the correct patch? Is there another bug hiding in this?
Regards,
-John
wb8tyw@qsl.network
Personal Opinion Only