From 031ff45c7ceb84d762a3df9ed3ff7b973b73dc39 Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Thu, 14 Oct 2021 22:46:30 +0900 Subject: [PATCH] lsfd: (helper) set proper errno before calling err() Signed-off-by: Masatake YAMATO --- tests/helpers/test_mkfds.c | 7 +++++++ 1 file changed, 7 insertions(+) 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); } -- 2.47.3