Blame SOURCES/0001-Move-closing-standard-FDs-after-listen.patch

cb5a1f
From 40fea4552377504ce69935149e64e39a595f4600 Mon Sep 17 00:00:00 2001
cb5a1f
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
cb5a1f
Date: Sat, 3 Aug 2019 17:50:14 +0200
cb5a1f
Subject: [PATCH 1/2] Move closing standard FDs after listen()
cb5a1f
cb5a1f
The vsf_sysutil_close() calls need to be moved a bit further so that
cb5a1f
die() works properly in case listen() fails.
cb5a1f
cb5a1f
I see no reason the calls should be placed before listen()
cb5a1f
specifically, as they are now. My guess is that the author who added
cb5a1f
the calls thought that listen() is a blocking call, which is not the
cb5a1f
case. The only thing we need to satisfy is that close() is called
cb5a1f
before accept, because that is a blocking call. That's all that is
cb5a1f
needed to fix the bug that was fixed by adding the close() calls.
cb5a1f
cb5a1f
Resolves: rhbz#1666380
cb5a1f
---
cb5a1f
 standalone.c | 6 +++---
cb5a1f
 1 file changed, 3 insertions(+), 3 deletions(-)
cb5a1f
cb5a1f
diff --git a/standalone.c b/standalone.c
cb5a1f
index 3f35e9e..b358ca1 100644
cb5a1f
--- a/standalone.c
cb5a1f
+++ b/standalone.c
cb5a1f
@@ -152,15 +152,15 @@ vsf_standalone_main(void)
cb5a1f
       vsf_sysutil_kill(vsf_sysutil_getppid(), kVSFSysUtilSigUSR1);
cb5a1f
     }
cb5a1f
   }
cb5a1f
-  vsf_sysutil_close(0);
cb5a1f
-  vsf_sysutil_close(1);
cb5a1f
-  vsf_sysutil_close(2);
cb5a1f
   retval = vsf_sysutil_listen(listen_sock, VSFTP_LISTEN_BACKLOG);
cb5a1f
   if (vsf_sysutil_retval_is_error(retval))
cb5a1f
   {
cb5a1f
     die("could not listen");
cb5a1f
   }
cb5a1f
   vsf_sysutil_sockaddr_alloc(&p_accept_addr);
cb5a1f
+  vsf_sysutil_close(0);
cb5a1f
+  vsf_sysutil_close(1);
cb5a1f
+  vsf_sysutil_close(2);
cb5a1f
   while (1)
cb5a1f
   {
cb5a1f
     struct vsf_client_launch child_info;
cb5a1f
-- 
cb5a1f
2.20.1
cb5a1f