]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/pager: Handle dup errors
authorTobias Stoeckmann <tobias@stoeckmann.org>
Mon, 23 Feb 2026 18:57:34 +0000 (19:57 +0100)
committerTobias Stoeckmann <tobias@stoeckmann.org>
Mon, 23 Feb 2026 18:57:34 +0000 (19:57 +0100)
If dup fails, e.g. due to open file descriptor limitations, gracefully
handle the situation and do not start the pager.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
lib/pager.c

index 3dc213dc964ab6d9757ec89c2d5c165a0996eaef..81111830adb059180e5cd05fd5ce624cef3938b4 100644 (file)
@@ -249,11 +249,14 @@ void pager_open(void)
        pager_process.org_out = dup(STDOUT_FILENO);
        pager_process.org_err = dup(STDERR_FILENO);
 
-       __setup_pager();
+       if (pager_process.org_out != -1 && pager_process.org_err != -1)
+               __setup_pager();
 
        if (!pager_process.pid) {
-               close(pager_process.org_out);
-               close(pager_process.org_err);
+               if (pager_process.org_out != -1)
+                       close(pager_process.org_out);
+               if (pager_process.org_err != -1)
+                       close(pager_process.org_err);
                memset(&pager_process, 0, sizeof(pager_process));
        }
 }