hush: fix mishandling of "true | f() { echo QWE; }"

function                                             old     new   delta
run_pipe                                            1820    1826      +6

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-04-03 13:02:43 +02:00
parent 5fa0505f8a
commit 49015a60cb

View File

@ -7705,6 +7705,15 @@ static void pseudo_exec(nommu_save_t *nommu_save,
struct command *command, struct command *command,
char **argv_expanded) char **argv_expanded)
{ {
#if ENABLE_HUSH_FUNCTIONS
if (command->cmd_type == CMD_FUNCDEF) {
/* Ignore funcdefs in pipes:
* true | f() { cmd }
*/
_exit(0);
}
#endif
if (command->argv) { if (command->argv) {
pseudo_exec_argv(nommu_save, command->argv, pseudo_exec_argv(nommu_save, command->argv,
command->assignment_cnt, argv_expanded); command->assignment_cnt, argv_expanded);