[packages/openssh] Rel 2; upstream 'Don't trust closefrom() on Linux.'. Should fix problems with closefrom in chroot.
arekm
arekm at pld-linux.org
Tue Nov 16 20:46:43 CET 2021
commit e24ec364a8a89d209b87a0ffbe00d8a046d4a9e6
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Tue Nov 16 20:44:34 2021 +0100
Rel 2; upstream 'Don't trust closefrom() on Linux.'. Should fix problems with closefrom in chroot.
closefrom.patch | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
openssh.spec | 6 +++---
2 files changed, 60 insertions(+), 3 deletions(-)
---
diff --git a/openssh.spec b/openssh.spec
index bacae21..e991060 100644
--- a/openssh.spec
+++ b/openssh.spec
@@ -37,7 +37,7 @@ Summary(ru.UTF-8): OpenSSH - свободная реализация прото
Summary(uk.UTF-8): OpenSSH - вільна реалізація протоколу Secure Shell (SSH)
Name: openssh
Version: 8.8p1
-Release: 1
+Release: 2
Epoch: 2
License: BSD
Group: Applications/Networking
@@ -68,7 +68,7 @@ Patch8: ldap-helper-sigpipe.patch
# High Performance SSH/SCP - HPN-SSH - http://www.psc.edu/networking/projects/hpn-ssh/
# http://www.psc.edu/networking/projects/hpn-ssh/openssh-5.2p1-hpn13v6.diff.gz
Patch9: %{name}-5.2p1-hpn13v6.diff
-
+Patch10: closefrom.patch
Patch11: %{name}-chroot.patch
Patch13: %{name}-skip-interop-tests.patch
@@ -550,7 +550,7 @@ openldap-a.
%patch8 -p1
%{?with_hpn:%patch9 -p1}
-
+%patch10 -p1
%patch11 -p1
%patch13 -p1
diff --git a/closefrom.patch b/closefrom.patch
new file mode 100644
index 0000000..760e2cd
--- /dev/null
+++ b/closefrom.patch
@@ -0,0 +1,57 @@
+commit 10b899a15c88eb40eb5f73cd0fa84ef0966f79c9
+Author: Darren Tucker <dtucker at dtucker.net>
+Date: Wed Nov 10 12:34:25 2021 +1100
+
+ Don't trust closefrom() on Linux.
+
+ glibc's closefrom implementation does not work in a chroot when the kernel
+ does not have close_range. It tries to read from /proc/self/fd and when
+ that fails dies with an assertion of sorts. Instead, call close_range
+ ourselves from our compat code and fall back if that fails. bz#3349,
+ with william.wilson at canonical.com and fweimer at redhat.com.
+
+diff --git a/configure.ac b/configure.ac
+index 165b391f..cd4cadec 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -839,6 +839,7 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
+ dnl Target SUSv3/POSIX.1-2001 plus BSD specifics.
+ dnl _DEFAULT_SOURCE is the new name for _BSD_SOURCE
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE"
++ AC_DEFINE([BROKEN_CLOSEFROM], [1], [broken in chroots on older kernels])
+ AC_DEFINE([PAM_TTY_KLUDGE], [1],
+ [Work around problematic Linux PAM modules handling of PAM_TTY])
+ AC_DEFINE([LOCKED_PASSWD_PREFIX], ["!"],
+@@ -1820,6 +1821,7 @@ AC_CHECK_FUNCS([ \
+ cap_rights_limit \
+ clock \
+ closefrom \
++ close_range \
+ dirfd \
+ endgrent \
+ err \
+diff --git a/openbsd-compat/bsd-closefrom.c b/openbsd-compat/bsd-closefrom.c
+index 8fadca2d..08b7da69 100644
+--- a/openbsd-compat/bsd-closefrom.c
++++ b/openbsd-compat/bsd-closefrom.c
+@@ -16,7 +16,7 @@
+
+ #include "includes.h"
+
+-#ifndef HAVE_CLOSEFROM
++#if !defined(HAVE_CLOSEFROM) || defined(BROKEN_CLOSEFROM)
+
+ #include <sys/types.h>
+ #include <sys/param.h>
+@@ -130,6 +130,11 @@ closefrom(int lowfd)
+ DIR *dirp;
+ int len;
+
++#ifdef HAVE_CLOSE_RANGE
++ if (close_range(lowfd, INT_MAX, 0) == 0)
++ return;
++#endif
++
+ /* Check for a /proc/$$/fd directory. */
+ len = snprintf(fdpath, sizeof(fdpath), "/proc/%ld/fd", (long)getpid());
+ if (len > 0 && (size_t)len < sizeof(fdpath) && (dirp = opendir(fdpath))) {
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/openssh.git/commitdiff/e24ec364a8a89d209b87a0ffbe00d8a046d4a9e6
More information about the pld-cvs-commit
mailing list