diff -r d88c5d15a4af -r d697072a92f5 components/ksh93/patches/120-CR7089799.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/ksh93/patches/120-CR7089799.patch Mon Apr 27 10:19:50 2015 -0500 @@ -0,0 +1,35 @@ +diff -rupN INIT.2011-02-08.clean/src/cmd/ksh93/sh/io.c INIT.2011-02-08/src/cmd/ksh93/sh/io.c +--- INIT.2011-02-08.clean/src/cmd/ksh93/sh/io.c 2012-05-07 14:33:37.179788579 +0100 ++++ INIT.2011-02-08/src/cmd/ksh93/sh/io.c 2012-05-07 14:39:11.089877123 +0100 +@@ -868,10 +868,10 @@ int sh_iomovefd(register int fdold) + { + Shell_t *shp = sh_getinterp(); + register int fdnew; ++ VALIDATE_FD(shp, fdold); + if(fdold<0 || fdold>2) + return(fdold); + fdnew = sh_iomovefd(dup(fdold)); +- VALIDATE_FD(shp, fdold); + VALIDATE_FD(shp, fdnew); + shp->fdstatus[fdnew] = (shp->fdstatus[fdold]&~IOCLEX); + close(fdold); +@@ -890,6 +890,8 @@ int sh_pipe(register int pv[]) + errormsg(SH_DICT,ERROR_system(1),e_pipe); + pv[0] = sh_iomovefd(pv[0]); + pv[1] = sh_iomovefd(pv[1]); ++ VALIDATE_FD(shp, pv[0]); ++ VALIDATE_FD(shp, pv[1]); + shp->fdstatus[pv[0]] = IONOSEEK|IOREAD; + shp->fdstatus[pv[1]] = IONOSEEK|IOWRITE; + sh_subsavefd(pv[0]); +diff -rupN INIT.2011-02-08.clean/src/cmd/ksh93/sh/path.c INIT.2011-02-08/src/cmd/ksh93/sh/path.c +--- INIT.2011-02-08.clean/src/cmd/ksh93/sh/path.c 2012-05-07 14:33:37.182443770 +0100 ++++ INIT.2011-02-08/src/cmd/ksh93/sh/path.c 2012-05-07 14:40:06.256096054 +0100 +@@ -565,6 +565,7 @@ static int path_opentype(Shell_t *shp,co + if(fd>=0 && (fd = sh_iomovefd(fd)) > 0) + { + fcntl(fd,F_SETFD,FD_CLOEXEC); ++ VALIDATE_FD(shp, fd); + shp->fdstatus[fd] |= IOCLEX; + } + return(fd);