From feeb62d15f61a52788175a9f4e3ecc0cdca71d87 Mon Sep 17 00:00:00 2001 From: Johnothan King Date: Sun, 26 Dec 2021 09:03:51 -0800 Subject: [PATCH] sh_close(): Set errno to EBADF for invalid file descriptors (#399) The sh_close() function fails to set errno to EBADF when passed a negative (invalid) file descriptor. This commit fixes the issue by setting errno if the file descriptor is a negative value (backported from ksh93v- 2012-08-24). --- src/cmd/ksh93/sh/io.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cmd/ksh93/sh/io.c b/src/cmd/ksh93/sh/io.c index 7c57253d1..ef5fc05ef 100644 --- a/src/cmd/ksh93/sh/io.c +++ b/src/cmd/ksh93/sh/io.c @@ -708,7 +708,10 @@ int sh_close(register int fd) register Sfio_t *sp; register int r = 0; if(fd<0) + { + errno = EBADF; return(-1); + } if(fd >= shp->gd->lim.open_max) sh_iovalidfd(shp,fd); if(!(sp=shp->sftable[fd]) || sfclose(sp) < 0)