47 lines
1.5 KiB
Diff
47 lines
1.5 KiB
Diff
From c9f7bba2e6f70b7ac1f5ea190d890cb5162ce127 Mon Sep 17 00:00:00 2001
|
|
From: Darren Tucker <dtucker@dtucker.net>
|
|
Date: Fri, 25 Jun 2021 15:08:18 +1000
|
|
Subject: Move closefrom() to before first malloc.
|
|
|
|
When built against tcmalloc, tcmalloc allocates a descriptor for its
|
|
internal use, so calling closefrom() afterward causes the descriptor
|
|
number to be reused resulting in a corrupted connection. Moving the
|
|
closefrom a little earlier should resolve this. From kircherlike at
|
|
outlook.com via bz#3321, ok djm@
|
|
---
|
|
ssh.c | 12 ++++++------
|
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/ssh.c b/ssh.c
|
|
index cf8c018e..0343cba3 100644
|
|
--- a/ssh.c
|
|
+++ b/ssh.c
|
|
@@ -609,6 +609,12 @@ main(int ac, char **av)
|
|
/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
|
|
sanitise_stdfd();
|
|
|
|
+ /*
|
|
+ * Discard other fds that are hanging around. These can cause problem
|
|
+ * with backgrounded ssh processes started by ControlPersist.
|
|
+ */
|
|
+ closefrom(STDERR_FILENO + 1);
|
|
+
|
|
__progname = ssh_get_progname(av[0]);
|
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
|
SSLeay_add_all_algorithms();
|
|
@@ -638,12 +644,6 @@ main(int ac, char **av)
|
|
debug("FIPS mode initialized");
|
|
}
|
|
|
|
- /*
|
|
- * Discard other fds that are hanging around. These can cause problem
|
|
- * with backgrounded ssh processes started by ControlPersist.
|
|
- */
|
|
- closefrom(STDERR_FILENO + 1);
|
|
-
|
|
/* Get user data. */
|
|
pw = getpwuid(getuid());
|
|
if (!pw) {
|
|
--
|
|
cgit v1.2.3
|