From de7eb8525501c47724fe5643bdbdc2647680aa69 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 19 Jan 2021 18:23:14 +0000 Subject: [PATCH] sh_subsavefd(): avoid a negative shift operand This change is backported from the abandoned ksh 93v- beta. src/cmd/ksh93/sh/subshell.c: sh_subsavefd(): - Do not subtract 1 from fd, as this would cause a negative shift operand for stdin (fd==0). --- src/cmd/ksh93/sh/subshell.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cmd/ksh93/sh/subshell.c b/src/cmd/ksh93/sh/subshell.c index e8d785361..283b30f8d 100644 --- a/src/cmd/ksh93/sh/subshell.c +++ b/src/cmd/ksh93/sh/subshell.c @@ -90,7 +90,7 @@ static struct subshell char jobcontrol; char monitor; unsigned char fdstatus; - int fdsaved; /* bit make for saved files */ + int fdsaved; /* bit mask for saved file descriptors */ int sig; /* signal for $$ */ pid_t bckpid; pid_t cpid; @@ -457,8 +457,8 @@ int sh_subsavefd(register int fd) register int old=0; if(sp) { - old = !(sp->fdsaved&(1<<(fd-1))); - sp->fdsaved |= (1<<(fd-1)); + old = !(sp->fdsaved&(1<fdsaved |= (1<