]> granicus.if.org Git - sudo/commitdiff
When restoring fds traverse list from high -> low, not low -> high
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 14 Jan 2014 21:22:04 +0000 (14:22 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 14 Jan 2014 21:22:04 +0000 (14:22 -0700)
to avoid implicitly closing an fd we want to relocate.

--HG--
branch : 1.8

src/preserve_fds.c

index e1ed57038aadfc8262cc1f5adbea93176e314b5b..4cc5d2edf243f1a1ad3dce5857586ec32aecc3af 100644 (file)
@@ -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,