diff options
author | Todd C. Miller <Todd.Miller@courtesan.com> | 2014-01-14 14:22:04 -0700 |
---|---|---|
committer | Todd C. Miller <Todd.Miller@courtesan.com> | 2014-01-14 14:22:04 -0700 |
commit | b3a8f71c2d911567b771a38ab62c3c549c513ae6 (patch) | |
tree | bf4059acb8eefe27d4fd69f78ac034bc5971ff3c | |
parent | f930edd00d202e575b7b8c20cb0a6480f3b4dedb (diff) | |
download | sudo-b3a8f71c2d911567b771a38ab62c3c549c513ae6.tar.gz |
When restoring fds traverse list from high -> low, not low -> high
to avoid implicitly closing an fd we want to relocate.
-rw-r--r-- | src/preserve_fds.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/preserve_fds.c b/src/preserve_fds.c index e1ed57038..4cc5d2edf 100644 --- a/src/preserve_fds.c +++ b/src/preserve_fds.c @@ -166,7 +166,7 @@ closefrom_except(int startfd, struct preserved_fd_list *pfds) closefrom(startfd); /* Restore preserved fds and set flags. */ - TAILQ_FOREACH(pfd, pfds, entries) { + TAILQ_FOREACH_REVERSE(pfd, pfds, preserved_fd_list, entries) { if (pfd->lowfd != pfd->highfd) { if (dup2(pfd->lowfd, pfd->highfd) == -1) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, |