From: Masatake YAMATO Date: Thu, 14 Oct 2021 13:46:30 +0000 (+0900) Subject: lsfd: (helper) set proper errno before calling err() X-Git-Tag: v2.38-rc1~144^2~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=031ff45c7ceb84d762a3df9ed3ff7b973b73dc39;p=thirdparty%2Futil-linux.git lsfd: (helper) set proper errno before calling err() Signed-off-by: Masatake YAMATO --- diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index 27bbf984e9..6663846124 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -17,6 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include #include #include @@ -80,7 +81,9 @@ static void open_ro_regular_file(struct factory *factory _U_, struct fdesc fdesc err(EXIT_FAILURE, "failed to open: %s", file); if (dup2(fd, fdescs[0].fd) < 0) { + int e = errno; close(fd); + errno = e; err(EXIT_FAILURE, "failed to dup %d -> %d", fd, fdescs[0].fd); } @@ -99,8 +102,10 @@ static void make_pipe(struct factory *factory _U_, struct fdesc fdescs[], pid_t for (int i = 0; i < 2; i++) { if (dup2(pd[i], fdescs[i].fd) < 0) { + int e = errno; close(pd[0]); close(pd[1]); + errno = e; err(EXIT_FAILURE, "failed to dup %d -> %d", pd[i], fdescs[i].fd); } @@ -121,7 +126,9 @@ static void open_directory(struct factory *factory _U_, struct fdesc fdescs[], p err(EXIT_FAILURE, "failed to open: %s", dir); if (dup2(fd, fdescs[0].fd) < 0) { + int e = errno; close(fd); + errno = e; err(EXIT_FAILURE, "failed to dup %d -> %d", fd, fdescs[0].fd); }