From 6bf1360b72816b3ddc95b33de1bb111d718399b1 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Wed, 24 Jul 2019 16:00:58 -0700 Subject: Avoid double-close of fd in loopfiles_lines. Test: no EBADF in `strace -e close ./toybox tac /proc/version` --- lib/lib.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/lib.c b/lib/lib.c index 47e5ca21..53962a59 100644 --- a/lib/lib.c +++ b/lib/lib.c @@ -694,7 +694,8 @@ static void loopfile_lines_bridge(int fd, char *name) void loopfiles_lines(char **argv, void (*function)(char **pline, long len)) { do_lines_bridge = function; - loopfiles(argv, loopfile_lines_bridge); + // No O_CLOEXEC because we need to call fclose. + loopfiles_rw(argv, O_RDONLY|WARN_ONLY, 0, loopfile_lines_bridge); } // Slow, but small. -- cgit v1.2.3