From 2bc5b3024008eb51cd27ee36c18bac68dd904226 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 9 Feb 2023 20:38:57 +0200 Subject: Fix possible fd leak in readdir extension. --- extension/ChangeLog | 6 ++++++ extension/readdir.c | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'extension') diff --git a/extension/ChangeLog b/extension/ChangeLog index abc2bf95..14b95fa0 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,9 @@ +2023-02-09 Arnold D. Robbins + + * readdir.c (dir_can_take_control_of): If ! HAVE_OPENDIR, + don't leak any open file descriptor. Thanks to + Eli Zaretskii for the bug report. + 2023-01-22 Arnold D. Robbins * configure.ac: Check also for strptime. diff --git a/extension/readdir.c b/extension/readdir.c index 77059168..8ec695d7 100644 --- a/extension/readdir.c +++ b/extension/readdir.c @@ -270,8 +270,11 @@ dir_take_control_of(awk_input_buf_t *iobuf) dp = fdopendir(iobuf->fd); #else dp = opendir(iobuf->name); - if (dp != NULL) + if (dp != NULL) { + if (iobuf->fd != INVALID_HANDLE) + (void) close(iobuf->fd); iobuf->fd = dirfd(dp); + } #endif if (dp == NULL) { warning(ext_id, _("dir_take_control_of: opendir/fdopendir failed: %s"), -- cgit v1.2.1