]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/pager: Release resources on pager_open error
authorTobias Stoeckmann <tobias@stoeckmann.org>
Wed, 4 Feb 2026 20:31:01 +0000 (21:31 +0100)
committerTobias Stoeckmann <tobias@stoeckmann.org>
Wed, 4 Feb 2026 20:31:01 +0000 (21:31 +0100)
If __setup_pager is unable to spawn a new process, close the duplicated
file descriptors on error path. Also, for the sake of completeness,
clear all other fields in pager_process as well.

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

index acace79f2ef2b4847200769f296887972bf0d1d1..e802267d9ed797cfb8396e6ba247e4287d010979 100644 (file)
@@ -238,6 +238,12 @@ void pager_open(void)
        pager_process.org_err = dup(STDERR_FILENO);
 
        __setup_pager();
+
+       if (!pager_process.pid) {
+               close(pager_process.org_out);
+               close(pager_process.org_err);
+               memset(&pager_process, 0, sizeof(pager_process));
+       }
 }
 
 /* Close pager and restore original std{out,err}.