From b63d0db0bbcf3eebef952e56081e10f9043ed7ad Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Sat, 25 Nov 2017 20:58:31 +0000 Subject: net-ftp/vsftpd: fix clone usage, bug #630704 Rolf Eike Beer found and fixed the cause of vsftpd being broken on sparc: clone syscall needs special handling of sparc as argument passing is special there. Reported-by: Rolf Eike Beer Fixed-by: Rolf Eike Beer Closes: https://bugs.gentoo.org/630704 Package-Manager: Portage-2.3.16, Repoman-2.3.6 --- net-ftp/vsftpd/Manifest | 2 +- net-ftp/vsftpd/files/vsftpd-3.0.3-sparc.patch | 16 +++ net-ftp/vsftpd/vsftpd-3.0.3-r2.ebuild | 137 ++++++++++++++++++++++++++ 3 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 net-ftp/vsftpd/files/vsftpd-3.0.3-sparc.patch create mode 100644 net-ftp/vsftpd/vsftpd-3.0.3-r2.ebuild (limited to 'net-ftp') diff --git a/net-ftp/vsftpd/Manifest b/net-ftp/vsftpd/Manifest index 3966c0534a1c..ff1fc0d2dbc8 100644 --- a/net-ftp/vsftpd/Manifest +++ b/net-ftp/vsftpd/Manifest @@ -1,3 +1,3 @@ DIST vsftpd-2.3.5.tar.gz 187691 SHA256 d87ee2987df8f03e1dbe294905f7907b2798deb89c67ca965f6e2f60879e54f1 SHA512 7d58d601c4a14cf16c074f238d557fd28e080d7573a1257f742e43bf97cff455b6bf083d8e3594cc7f8865f9485b307b692e91c17426c7fed11af9e4b41a0643 WHIRLPOOL 2dba4ae125bbd66522f58ce4ffc9d5be8ea2a84876fe6751593b82aa2c3e5fe1e1ed076c1c09268054f7ea6831683a2be0dd4e269e321d572d859d0ae2535406 DIST vsftpd-3.0.2.tar.gz 192808 SHA256 be46f0e2c5528fe021fafc8dab1ecfea0c1f183063a06977f8537fcd0b195e56 SHA512 d5b978e07d8b0a623b79a531824666fb9b970ad5989a8c34c21b545b62ba07cde4bfe3d77b40a8b6e92d17890c37cae209231af8f106da3404f6548e217bd023 WHIRLPOOL 7a74ab478880d021f7a82ffc6ec3989617003234e30d97063760bc06baeee2ab207861b440896b926b95eed7b3d902ab96c05c1bbd23d494d9ff168f98d3404a -DIST vsftpd-3.0.3.tar.gz 196649 SHA256 9d4d2bf6e6e2884852ba4e69e157a2cecd68c5a7635d66a3a8cf8d898c955ef7 SHA512 5a4410a88e72ecf6f60a60a89771bcec300c9f63c2ea83b219bdf65fd9749b9853f9579f7257205b55659aefcd5dab243eba878dbbd4f0ff8532dd6e60884df7 WHIRLPOOL 014b13a1031d89a12412fb1abc808c8d62f474b84e9d1699ec789e99c9b9ec7f4538e7504caa810c6b77dcccea8fc0e32e9bb3ac5ffc8e2e9a29f67b69ddc3cb +DIST vsftpd-3.0.3.tar.gz 196649 BLAKE2B dbf96e788494c29d78ca49fad6a03641c9725f9a5b01a4059ad009870fdc28520cd467cd8288a8a9a520c411c495a42c3fff57ee1069efc65840adb245792dca SHA512 5a4410a88e72ecf6f60a60a89771bcec300c9f63c2ea83b219bdf65fd9749b9853f9579f7257205b55659aefcd5dab243eba878dbbd4f0ff8532dd6e60884df7 diff --git a/net-ftp/vsftpd/files/vsftpd-3.0.3-sparc.patch b/net-ftp/vsftpd/files/vsftpd-3.0.3-sparc.patch new file mode 100644 index 000000000000..9bae9c0238f8 --- /dev/null +++ b/net-ftp/vsftpd/files/vsftpd-3.0.3-sparc.patch @@ -0,0 +1,16 @@ +Workaround clone syscall mishandling. + +https://bugs.gentoo.org/630704 +--- a/sysdeputil.c 2017-09-11 11:38:06.522229630 +0200 ++++ b/sysdeputil.c 2017-09-11 11:38:10.422229500 +0200 +@@ -67,7 +67,9 @@ + #if defined(__linux__) + #include + #include +- #define VSF_SYSDEP_HAVE_LINUX_CLONE ++ #ifndef __sparc__ ++ #define VSF_SYSDEP_HAVE_LINUX_CLONE ++ #endif + #include + #ifndef CLONE_NEWPID + #define CLONE_NEWPID 0x20000000 diff --git a/net-ftp/vsftpd/vsftpd-3.0.3-r2.ebuild b/net-ftp/vsftpd/vsftpd-3.0.3-r2.ebuild new file mode 100644 index 000000000000..4da0f0e980e4 --- /dev/null +++ b/net-ftp/vsftpd/vsftpd-3.0.3-r2.ebuild @@ -0,0 +1,137 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" + +inherit eutils systemd toolchain-funcs + +DESCRIPTION="Very Secure FTP Daemon written with speed, size and security in mind" +HOMEPAGE="http://vsftpd.beasts.org/" +SRC_URI="http://security.appspot.com/downloads/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="caps libressl pam tcpd ssl selinux xinetd" + +DEPEND="caps? ( >=sys-libs/libcap-2 ) + pam? ( virtual/pam ) + tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + )" +RDEPEND="${DEPEND} + net-ftp/ftpbase + selinux? ( sec-policy/selinux-ftp ) + xinetd? ( sys-apps/xinetd )" + +src_prepare() { + # kerberos patch. bug #335980 + epatch "${FILESDIR}/${PN}-2.3.2-kerberos.patch" + + # Patch the source, config and the manpage to use /etc/vsftpd/ + epatch "${FILESDIR}/${PN}-2.3.5-gentoo.patch" + + # Fix building without the libcap + epatch "${FILESDIR}/${PN}-2.1.0-caps.patch" + + # Fix building on alpha. Bug #405829 + epatch "${FILESDIR}/${PN}-3.0.2-alpha.patch" + + # Configure vsftpd build defaults + use tcpd && echo "#define VSF_BUILD_TCPWRAPPERS" >> builddefs.h + use ssl && echo "#define VSF_BUILD_SSL" >> builddefs.h + use pam || echo "#undef VSF_BUILD_PAM" >> builddefs.h + + # Ensure that we don't link against libcap unless asked + if ! use caps ; then + sed -i '/^#define VSF_SYSDEP_HAVE_LIBCAP$/ d' sysdeputil.c || die + epatch "${FILESDIR}"/${PN}-2.2.0-dont-link-caps.patch + fi + + # Let portage control stripping + sed -i '/^LINK[[:space:]]*=[[:space:]]*/ s/-Wl,-s//' Makefile || die + + #Bug #335977 + epatch "${FILESDIR}"/${PN}-3.0.0-Makefile.patch + + #Bug #450536 + epatch "${FILESDIR}"/${PN}-3.0.2-remove-legacy-cap.patch + + #Bug #630704 + epatch "${FILESDIR}"/${PN}-3.0.3-sparc.patch + + eapply_user +} + +src_compile() { + # Override LIBS variable. Bug #508192 + LIBS= + use caps && LIBS+=" -lcap" + use pam && LIBS+=" -lpam" + use tcpd && LIBS+=" -lwrap" + use ssl && LIBS+=" -lssl -lcrypto" + + CFLAGS="${CFLAGS}" \ + CC="$(tc-getCC)" \ + emake LIBS="${LIBS}" +} + +src_install() { + into /usr + doman ${PN}.conf.5 ${PN}.8 + dosbin ${PN} || die "disbin failed" + + dodoc AUDIT BENCHMARKS BUGS Changelog FAQ \ + README README.security REWARD SIZE \ + SPEED TODO TUNING || die "dodoc failed" + newdoc ${PN}.conf ${PN}.conf.example + + docinto security + dodoc SECURITY/* || die "dodoc failed" + + insinto "/usr/share/doc/${PF}/examples" + doins -r EXAMPLE/* || die "doins faileD" + + insinto /etc/${PN} + newins ${PN}.conf{,.example} + + insinto /etc/logrotate.d + newins "${FILESDIR}/${PN}.logrotate" ${PN} + + if use xinetd ; then + insinto /etc/xinetd.d + newins "${FILESDIR}/${PN}.xinetd" ${PN} + fi + + newinitd "${FILESDIR}/${PN}.init" ${PN} + + keepdir /usr/share/${PN}/empty + + exeinto /usr/libexec + doexe "${FILESDIR}/vsftpd-checkconfig.sh" + systemd_dounit "${FILESDIR}/${PN}.service" + systemd_newunit "${FILESDIR}/${PN}_at.service" "${PN}@.service" + systemd_dounit "${FILESDIR}/${PN}.socket" +} + +pkg_preinst() { + # If we use xinetd, then we set listen=NO + # so that our default config works under xinetd - fixes #78347 + if use xinetd ; then + sed -i 's/listen=YES/listen=NO/g' "${D}"/etc/${PN}/${PN}.conf.example + fi +} + +pkg_postinst() { + einfo "vsftpd openRC init script can now be multiplexed." + einfo "The default init script forces /etc/vsftpd/vsftpd.conf to exist." + einfo "If you symlink the init script to another one, say vsftpd.foo" + einfo "then that uses /etc/vsftpd/foo.conf instead." + einfo + einfo "Example:" + einfo " cd /etc/init.d" + einfo " ln -s vsftpd vsftpd.foo" + einfo "You can now treat vsftpd.foo like any other service" +} -- cgit v1.2.3-65-gdbad