]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Use closefrom() to not loop over all possible file descriptors
authorrim <rozhuk.im@gmail.com>
Fri, 13 Sep 2019 15:58:55 +0000 (15:58 +0000)
committerSimon McVittie <smcv@collabora.com>
Thu, 21 Apr 2022 10:02:14 +0000 (11:02 +0100)
Resolves: https://gitlab.freedesktop.org/dbus/dbus/-/issues/278

cmake/ConfigureChecks.cmake
cmake/config.h.cmake
configure.ac
dbus/dbus-sysdeps-unix.c

index 98f27db7179d255feed0df576f99f73019052960..78b0fa952d8ea98c7a4a0f8f29383eebee272e4c 100644 (file)
@@ -52,6 +52,7 @@ check_symbol_exists(getpwnam_r   "errno.h;pwd.h"    HAVE_GETPWNAM_R)         #
 check_symbol_exists(setenv       "stdlib.h"         HAVE_SETENV)             #  dbus-sysdeps.c
 check_symbol_exists(unsetenv     "stdlib.h"         HAVE_UNSETENV)           #  dbus-sysdeps.c
 check_symbol_exists(clearenv     "stdlib.h"         HAVE_CLEARENV)           #  dbus-sysdeps.c
+check_symbol_exists(closefrom    "unistd.h"         HAVE_CLOSEFROM)          #  dbus-sysdeps-unix.c
 check_symbol_exists(writev       "sys/uio.h"        HAVE_WRITEV)             #  dbus-sysdeps.c, dbus-sysdeps-win.c
 check_symbol_exists(setrlimit    "sys/resource.h"   HAVE_SETRLIMIT)          #  dbus-sysdeps.c, dbus-sysdeps-win.c, test/test-segfault.c
 check_symbol_exists(socketpair   "sys/socket.h"     HAVE_SOCKETPAIR)         #  dbus-sysdeps.c
index 06bb34fd306aae117067e18f92e505fb4fde5abf..48c5db43e6f7216971d85c9cef9faebac1e82024 100644 (file)
 /* Define to 1 if you have clearenv */
 #cmakedefine   HAVE_CLEARENV 1
 
+/* Define to 1 if you have closefrom */
+#cmakedefine   HAVE_CLOSEFROM 1
+
 /* Define to 1 if you have writev */
 #cmakedefine   HAVE_WRITEV 1
 
index 6d4f3081018130bc0aa6481cda870db293911f33..dbaf14b77b3b447c996a7b6cd92e96f1e78523fa 100644 (file)
@@ -382,6 +382,7 @@ AS_IF([test x$enable_code_coverage = xyes],[
 AC_CHECK_FUNCS_ONCE([
 accept4
 clearenv
+closefrom
 fpathconf
 getgrouplist
 getpeereid
index 1c4d0f6f4a31a1e3166328c4805e0ca03c24a741..273f3f069e5e810da105484eff368a47409094b4 100644 (file)
@@ -4796,7 +4796,11 @@ act_on_fds_3_and_up (void (*func) (int fd))
 void
 _dbus_close_all (void)
 {
+#ifdef HAVE_CLOSEFROM
+  closefrom (3);
+#else
   act_on_fds_3_and_up (close_ignore_error);
+#endif
 }
 
 /**