Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Jan 2024 19:40:14 GMT
From:      Gleb Popov <arrowd@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 54ceee079e36 - main - devel/dbus: Pull in a patch that uses closefrom(2)
Message-ID:  <202401011940.401JeEbU085485@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by arrowd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=54ceee079e36b05345e715d8eb3139960ff0a325

commit 54ceee079e36b05345e715d8eb3139960ff0a325
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2024-01-01 19:33:47 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2024-01-01 19:40:07 +0000

    devel/dbus: Pull in a patch that uses closefrom(2)
    
    PR:             240549
---
 devel/dbus/Makefile                                |  2 +-
 devel/dbus/files/patch-cmake_ConfigureChecks.cmake | 26 ++++---
 devel/dbus/files/patch-cmake_config.h.cmake        |  7 +-
 devel/dbus/files/patch-configure                   | 25 ++++++
 devel/dbus/files/patch-dbus_dbus-sysdeps-unix.c    | 89 ++++++++++++++++++++++
 5 files changed, 137 insertions(+), 12 deletions(-)

diff --git a/devel/dbus/Makefile b/devel/dbus/Makefile
index d30abdb42873..7f03dd260e9b 100644
--- a/devel/dbus/Makefile
+++ b/devel/dbus/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	dbus
 DISTVERSION=	1.14.10
-PORTREVISION=	1
+PORTREVISION=	2
 PORTEPOCH=	1
 CATEGORIES=	devel gnome
 MASTER_SITES=	https://dbus.freedesktop.org/releases/dbus/
diff --git a/devel/dbus/files/patch-cmake_ConfigureChecks.cmake b/devel/dbus/files/patch-cmake_ConfigureChecks.cmake
index 41503ee27792..eb301120f17e 100644
--- a/devel/dbus/files/patch-cmake_ConfigureChecks.cmake
+++ b/devel/dbus/files/patch-cmake_ConfigureChecks.cmake
@@ -1,10 +1,18 @@
---- cmake/ConfigureChecks.cmake.orig	2022-09-14 12:12:21 UTC
+--- cmake/ConfigureChecks.cmake.orig	2024-01-01 18:36:58 UTC
 +++ cmake/ConfigureChecks.cmake
-@@ -51,6 +51,7 @@ check_symbol_exists(clearenv     "stdlib.h"         HA
- 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
+@@ -17,6 +17,7 @@ check_include_file(io.h         HAVE_IO_H)      # inte
+ check_include_file(grp.h        HAVE_GRP_H)     # dbus-sysdeps-util-win.c
+ check_include_file(inttypes.h     HAVE_INTTYPES_H)   # dbus-pipe.h
+ check_include_file(io.h         HAVE_IO_H)      # internal
++check_include_file(linux/close_range.h HAVE_LINUX_CLOSE_RANGE_H)
+ check_include_file(locale.h     HAVE_LOCALE_H)
+ check_include_file(memory.h     HAVE_MEMORY_H)
+ check_include_file(signal.h     HAVE_SIGNAL_H)
+@@ -31,6 +32,7 @@ check_include_file(sys/stat.h     HAVE_SYS_STAT_H)
+ check_include_file(sys/random.h     HAVE_SYS_RANDOM_H)
+ check_include_file(sys/resource.h     HAVE_SYS_RESOURCE_H)
+ check_include_file(sys/stat.h     HAVE_SYS_STAT_H)
++check_include_file(sys/syscall.h HAVE_SYS_SYSCALL_H)
+ check_include_file(sys/types.h     HAVE_SYS_TYPES_H)
+ check_include_file(sys/uio.h     HAVE_SYS_UIO_H)
+ check_include_file(sys/prctl.h  HAVE_SYS_PRCTL_H)
diff --git a/devel/dbus/files/patch-cmake_config.h.cmake b/devel/dbus/files/patch-cmake_config.h.cmake
index c3dc5e5b989a..c256ee2c6fbd 100644
--- a/devel/dbus/files/patch-cmake_config.h.cmake
+++ b/devel/dbus/files/patch-cmake_config.h.cmake
@@ -1,11 +1,14 @@
---- cmake/config.h.cmake.orig	2022-09-14 12:12:21 UTC
+--- cmake/config.h.cmake.orig	2022-10-02 14:06:53 UTC
 +++ cmake/config.h.cmake
-@@ -198,6 +198,9 @@
+@@ -198,6 +198,12 @@
  /* 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 close_range */
++#cmakedefine   HAVE_CLOSE_RANGE 1
 +
  /* Define to 1 if you have writev */
  #cmakedefine   HAVE_WRITEV 1
diff --git a/devel/dbus/files/patch-configure b/devel/dbus/files/patch-configure
new file mode 100644
index 000000000000..8b8b5d8d13b9
--- /dev/null
+++ b/devel/dbus/files/patch-configure
@@ -0,0 +1,25 @@
+--- configure.orig	2023-09-01 14:31:27 UTC
++++ configure
+@@ -3419,6 +3419,8 @@ as_fn_append ac_func_c_list " clearenv HAVE_CLEARENV"
+ as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+ as_fn_append ac_func_c_list " accept4 HAVE_ACCEPT4"
+ as_fn_append ac_func_c_list " clearenv HAVE_CLEARENV"
++as_fn_append ac_func_c_list " close_range HAVE_CLOSE_RANGE"
++as_fn_append ac_func_c_list " closefrom HAVE_CLOSEFROM"
+ as_fn_append ac_func_c_list " fpathconf HAVE_FPATHCONF"
+ as_fn_append ac_func_c_list " getgrouplist HAVE_GETGROUPLIST"
+ as_fn_append ac_func_c_list " getpeereid HAVE_GETPEEREID"
+@@ -3449,11 +3451,13 @@ as_fn_append ac_header_c_list " errno.h errno_h HAVE_E
+ as_fn_append ac_header_c_list " crt_externs.h crt_externs_h HAVE_CRT_EXTERNS_H"
+ as_fn_append ac_header_c_list " dirent.h dirent_h HAVE_DIRENT_H"
+ as_fn_append ac_header_c_list " errno.h errno_h HAVE_ERRNO_H"
++as_fn_append ac_header_c_list " linux/close_range.h linux_close_range_h HAVE_LINUX_CLOSE_RANGE_H"
+ as_fn_append ac_header_c_list " locale.h locale_h HAVE_LOCALE_H"
+ as_fn_append ac_header_c_list " signal.h signal_h HAVE_SIGNAL_H"
+ as_fn_append ac_header_c_list " sys/prctl.h sys_prctl_h HAVE_SYS_PRCTL_H"
+ as_fn_append ac_header_c_list " sys/random.h sys_random_h HAVE_SYS_RANDOM_H"
+ as_fn_append ac_header_c_list " sys/resource.h sys_resource_h HAVE_SYS_RESOURCE_H"
++as_fn_append ac_header_c_list " sys/syscall.h sys_syscall_h HAVE_SYS_SYSCALL_H"
+ as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
+ as_fn_append ac_header_c_list " ws2tcpip.h ws2tcpip_h HAVE_WS2TCPIP_H"
+ as_fn_append ac_func_c_list " getpwnam_r HAVE_GETPWNAM_R"
diff --git a/devel/dbus/files/patch-dbus_dbus-sysdeps-unix.c b/devel/dbus/files/patch-dbus_dbus-sysdeps-unix.c
new file mode 100644
index 000000000000..9a1e8badbaa7
--- /dev/null
+++ b/devel/dbus/files/patch-dbus_dbus-sysdeps-unix.c
@@ -0,0 +1,89 @@
+--- dbus/dbus-sysdeps-unix.c.orig	2023-08-16 10:29:50 UTC
++++ dbus/dbus-sysdeps-unix.c
+@@ -37,6 +37,7 @@
+ #include "dbus-credentials.h"
+ #include "dbus-nonce.h"
+ 
++#include <limits.h>
+ #include <sys/types.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -62,6 +63,9 @@
+ #ifdef HAVE_ERRNO_H
+ #include <errno.h>
+ #endif
++#ifdef HAVE_LINUX_CLOSE_RANGE_H
++#include <linux/close_range.h>
++#endif
+ #ifdef HAVE_SYSLOG_H
+ #include <syslog.h>
+ #endif
+@@ -80,6 +84,9 @@
+ #ifdef HAVE_SYS_RANDOM_H
+ #include <sys/random.h>
+ #endif
++#ifdef HAVE_SYS_SYSCALL_H
++#include <sys/syscall.h>
++#endif
+ 
+ #ifdef HAVE_ADT
+ #include <bsm/adt.h>
+@@ -137,6 +144,21 @@
+ 
+ #endif /* Solaris */
+ 
++#if defined(__linux__) && defined(__NR_close_range) && !defined(HAVE_CLOSE_RANGE)
++/* The kernel headers are new enough to have the close_range syscall,
++ * but glibc isn't new enough to have the syscall wrapper, so call the
++ * syscall directly. */
++static inline int
++close_range (unsigned int first,
++             unsigned int last,
++             unsigned int flags)
++{
++  return syscall (__NR_close_range, first, last, flags);
++}
++/* Now we can call that inline wrapper as though it was provided by glibc. */
++#define HAVE_CLOSE_RANGE
++#endif
++
+ /**
+  * Ensure that the standard file descriptors stdin, stdout and stderr
+  * are open, by opening /dev/null if necessary.
+@@ -4791,7 +4813,24 @@ _dbus_close_all (void)
+ void
+ _dbus_close_all (void)
+ {
++#ifdef HAVE_CLOSE_RANGE
++  if (close_range (3, INT_MAX, 0) == 0)
++    return;
++#endif
++
++  /* Some library implementations of closefrom() are not async-signal-safe,
++   * and we call _dbus_close_all() after forking, so we only do this on
++   * operating systems where we know that closefrom() is a system call */
++#if defined(HAVE_CLOSEFROM) && ( \
++    defined(__FreeBSD__) || \
++    defined(__NetBSD__) || \
++    defined(__OpenBSD__) || \
++    defined(__sun__) && defined(F_CLOSEFROM) \
++)
++  closefrom (3);
++#else
+   act_on_fds_3_and_up (close_ignore_error);
++#endif
+ }
+ 
+ /**
+@@ -4801,6 +4840,11 @@ _dbus_fd_set_all_close_on_exec (void)
+ void
+ _dbus_fd_set_all_close_on_exec (void)
+ {
++#if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC)
++  if (close_range (3, INT_MAX, CLOSE_RANGE_CLOEXEC) == 0)
++    return;
++#endif
++
+   act_on_fds_3_and_up (_dbus_fd_set_close_on_exec);
+ }
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202401011940.401JeEbU085485>