diff options
author | Joshua Kinard <kumba@gentoo.org> | 2017-07-05 06:21:38 -0400 |
---|---|---|
committer | Joshua Kinard <kumba@gentoo.org> | 2017-07-05 06:22:16 -0400 |
commit | ae6ad766ca854bf00c6cbe18beb6f7ea6b806c79 (patch) | |
tree | aad9395a5b1a8262f297743222f2c200d0a6253e /net-libs/libtirpc | |
parent | app-text/tesseract: drop -ltiff patch in 3.05.01, bug #616142 (diff) | |
download | gentoo-ae6ad766ca854bf00c6cbe18beb6f7ea6b806c79.tar.gz gentoo-ae6ad766ca854bf00c6cbe18beb6f7ea6b806c79.tar.bz2 gentoo-ae6ad766ca854bf00c6cbe18beb6f7ea6b806c79.zip |
net-libs/libtirpc: backport fixes for uclibc-ng userlands
A number of patches from libtirpc git were backported from 1.0.2_rc3 to
resolve compiliation errors when building under a sys-libs/uclibc-ng
userland. Two patches are custom fixes -- see the top of each patch for
a more detailed explanation. Tested on mips (both uclibc-ng and glibc)
and amd64 glibc. Solves Bug #610846.
Signed-off-by: Joshua Kinard <kumba@gentoo.org>
Package-Manager: Portage-2.3.6, Repoman-2.3.2
Diffstat (limited to 'net-libs/libtirpc')
7 files changed, 377 insertions, 0 deletions
diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1_add-des_impl-c-7f6bb9a3467a.patch b/net-libs/libtirpc/files/libtirpc-1.0.1_add-des_impl-c-7f6bb9a3467a.patch new file mode 100644 index 000000000000..a62f23d87e94 --- /dev/null +++ b/net-libs/libtirpc/files/libtirpc-1.0.1_add-des_impl-c-7f6bb9a3467a.patch @@ -0,0 +1,29 @@ +From: Thorsten Kukuk <kukuk@thkukuk.de> +Date: Mon, 4 Apr 2016 13:48:04 +0000 (-0400) +Subject: Compile des_crypt.c and des_impl.c +X-Git-Tag: libtirpc-1-0-2-rc3~1 +X-Git-Url: http://git.linux-nfs.org/?p=steved%2Flibtirpc.git;a=commitdiff_plain;h=7f6bb9a3467a57caf43425d213a06aeb7870086b + +Compile des_crypt.c and des_impl.c + +Add des_impl.c to become independent of deprecated functions of glibc + +Fixes: f17b44048003 ('Revert commit c0547c56dafb') +Signed-off-by: Thorsten Kukuk <kukuk@thkukuk.de> +Signed-off-by: Steve Dickson <steved@redhat.com> +--- + +diff --git a/src/Makefile.am b/src/Makefile.am +index e4ed8aa..fba2aa4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -24,7 +24,7 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln + rpcb_st_xdr.c svc.c svc_auth.c svc_dg.c svc_auth_unix.c svc_auth_none.c \ + svc_auth_des.c \ + svc_generic.c svc_raw.c svc_run.c svc_simple.c svc_vc.c getpeereid.c \ +- auth_time.c auth_des.c authdes_prot.c debug.c ++ auth_time.c auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c + + ## XDR + libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c xdr_sizeof.c + diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1_ifdef-out-yp-headers-742bbdff6ddf.patch b/net-libs/libtirpc/files/libtirpc-1.0.1_ifdef-out-yp-headers-742bbdff6ddf.patch new file mode 100644 index 000000000000..481ace7e6fcd --- /dev/null +++ b/net-libs/libtirpc/files/libtirpc-1.0.1_ifdef-out-yp-headers-742bbdff6ddf.patch @@ -0,0 +1,30 @@ +From: Thorsten Kukuk <kukuk@thkukuk.de> +Date: Mon, 4 Apr 2016 13:37:32 +0000 (-0400) +Subject: getpublickey.c: ifdef out yp headers +X-Git-Tag: libtirpc-1-0-2-rc3~3 +X-Git-Url: http://git.linux-nfs.org/?p=steved%2Flibtirpc.git;a=commitdiff_plain;h=742bbdff6ddff4dde0d610a842cd8ac0408af0a0 + +getpublickey.c: ifdef out yp headers + +If we don't compile in YP support, don't include YP + +Signed-off-by: Thorsten Kukuk <kukuk@thkukuk.de> +Signed-off-by: Steve Dickson <steved@redhat.com> +--- + +diff --git a/src/getpublickey.c b/src/getpublickey.c +index 764a5f9..8cf4dc2 100644 +--- a/src/getpublickey.c ++++ b/src/getpublickey.c +@@ -38,8 +38,10 @@ + #include <pwd.h> + #include <rpc/rpc.h> + #include <rpc/key_prot.h> ++#ifdef YP + #include <rpcsvc/yp_prot.h> + #include <rpcsvc/ypclnt.h> ++#endif + #include <string.h> + #include <stdlib.h> + + diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1_remove-des-deps-to-glibc-503ac2e9fa56.patch b/net-libs/libtirpc/files/libtirpc-1.0.1_remove-des-deps-to-glibc-503ac2e9fa56.patch new file mode 100644 index 000000000000..0ef15290ea14 --- /dev/null +++ b/net-libs/libtirpc/files/libtirpc-1.0.1_remove-des-deps-to-glibc-503ac2e9fa56.patch @@ -0,0 +1,43 @@ +From: Thorsten Kukuk <kukuk@thkukuk.de> +Date: Mon, 4 Apr 2016 13:51:15 +0000 (-0400) +Subject: Remove des*.c dependencies to glibc +X-Git-Tag: libtirpc-1-0-2-rc3 +X-Git-Url: http://git.linux-nfs.org/?p=steved%2Flibtirpc.git;a=commitdiff_plain;h=503ac2e9fa569d95e366766202a7ca840e28b28a + +Remove des*.c dependencies to glibc + +Our des_impl.c has dependencies to glibc header files +and different arguments then our header file has. +Bring our own code in sync. + +Signed-off-by: Thorsten Kukuk <kukuk@thkukuk.de> +Signed-off-by: Steve Dickson <steved@redhat.com> +--- + +diff --git a/src/des_impl.c b/src/des_impl.c +index c5b7ed6..9dbccaf 100644 +--- a/src/des_impl.c ++++ b/src/des_impl.c +@@ -6,7 +6,8 @@ + /* see <http://www.gnu.org/licenses/> to obtain a copy. */ + #include <string.h> + #include <stdint.h> +-#include <rpc/rpc_des.h> ++#include <sys/types.h> ++#include <rpc/des.h> + + + static const uint32_t des_SPtrans[8][64] = +diff --git a/tirpc/rpc/des.h b/tirpc/rpc/des.h +index d2881ad..018aa48 100644 +--- a/tirpc/rpc/des.h ++++ b/tirpc/rpc/des.h +@@ -82,6 +82,6 @@ struct desparams { + /* + * Software DES. + */ +-extern int _des_crypt( char *, int, struct desparams * ); ++extern int _des_crypt( char *, unsigned, struct desparams * ); + + #endif + diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1_remove-nis-h-dep-5f00f8c78c5d.patch b/net-libs/libtirpc/files/libtirpc-1.0.1_remove-nis-h-dep-5f00f8c78c5d.patch new file mode 100644 index 000000000000..a8ad182f76b4 --- /dev/null +++ b/net-libs/libtirpc/files/libtirpc-1.0.1_remove-nis-h-dep-5f00f8c78c5d.patch @@ -0,0 +1,137 @@ +From: Thorsten Kukuk <kukuk@thkukuk.de> +Date: Mon, 4 Apr 2016 13:44:19 +0000 (-0400) +Subject: Remove dependency to nis.h +X-Git-Tag: libtirpc-1-0-2-rc3~2 +X-Git-Url: http://git.linux-nfs.org/?p=steved%2Flibtirpc.git;a=commitdiff_plain;h=5f00f8c78c5d13437d50c0737ce77ad67fd4361d + +Remove dependency to nis.h + +libtirpc needs rpcsvc/nis.h for compiling, but does not +provide this head file. It's only provided by glibc, +if the sunrpc code is not marked as deprecated, and +by libnsl. But libnsl needs libtirpc to compile... + +Signed-off-by: Steve Dickson <steved@redhat.com> +--- + +diff --git a/src/auth_des.c b/src/auth_des.c +index 4d3639e..af2f61f 100644 +--- a/src/auth_des.c ++++ b/src/auth_des.c +@@ -46,8 +46,8 @@ + #include <rpc/clnt.h> + #include <rpc/xdr.h> + #include <sys/socket.h> +-#undef NIS +-#include <rpcsvc/nis.h> ++ ++#include "nis.h" + + #if defined(LIBC_SCCS) && !defined(lint) + #endif +diff --git a/src/auth_time.c b/src/auth_time.c +index 10e58eb..7f83ab4 100644 +--- a/src/auth_time.c ++++ b/src/auth_time.c +@@ -44,8 +44,8 @@ + #include <rpc/rpcb_prot.h> + //#include <clnt_soc.h> + #include <sys/select.h> +-#undef NIS +-#include <rpcsvc/nis.h> ++ ++#include "nis.h" + + + #ifdef TESTING +diff --git a/src/nis.h b/src/nis.h +new file mode 100644 +index 0000000..588c041 +--- /dev/null ++++ b/src/nis.h +@@ -0,0 +1,70 @@ ++/* ++ * Copyright (c) 2010, Oracle America, Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are ++ * met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer in the documentation and/or other materials ++ * provided with the distribution. ++ * * Neither the name of the "Oracle America, Inc." nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ++ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, ++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ++ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ++ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#ifndef _INTERNAL_NIS_H ++#define _INTERNAL_NIS_H 1 ++ ++/* This file only contains the definition of nis_server, to be ++ able to compile libtirpc without the need to have a glibc ++ with sunrpc or a libnsl already installed. */ ++ ++#define NIS_PK_NONE 0 ++ ++struct nis_attr { ++ char *zattr_ndx; ++ struct { ++ u_int zattr_val_len; ++ char *zattr_val_val; ++ } zattr_val; ++}; ++typedef struct nis_attr nis_attr; ++ ++typedef char *nis_name; ++ ++struct endpoint { ++ char *uaddr; ++ char *family; ++ char *proto; ++}; ++typedef struct endpoint endpoint; ++ ++struct nis_server { ++ nis_name name; ++ struct { ++ u_int ep_len; ++ endpoint *ep_val; ++ } ep; ++ uint32_t key_type; ++ netobj pkey; ++}; ++typedef struct nis_server nis_server; ++ ++#endif /* ! _INTERNAL_NIS_H */ +diff --git a/src/rpc_soc.c b/src/rpc_soc.c +index 1ec7b3f..ed0892a 100644 +--- a/src/rpc_soc.c ++++ b/src/rpc_soc.c +@@ -61,8 +61,8 @@ + #include <string.h> + #include <unistd.h> + #include <fcntl.h> +-#include <rpcsvc/nis.h> + ++#include "nis.h" + #include "rpc_com.h" + + extern mutex_t rpcsoc_lock; + diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1_uclibc-dont-use-struct-rpcent.patch b/net-libs/libtirpc/files/libtirpc-1.0.1_uclibc-dont-use-struct-rpcent.patch new file mode 100644 index 000000000000..b2760d2b77b4 --- /dev/null +++ b/net-libs/libtirpc/files/libtirpc-1.0.1_uclibc-dont-use-struct-rpcent.patch @@ -0,0 +1,51 @@ +From https://patchwork.kernel.org/patch/5499671/: + + Subject: [6/9] Define struct rpcent on non GNU libc + From: Natanael Copa <ncopa@alpinelinux.org> + X-Patchwork-Id: 5499671 + Message-Id: <1418718540-13667-7-git-send-email-ncopa@alpinelinux.org> + To: libtirpc-devel@lists.sourceforge.net + Cc: linux-nfs@vger.kernel.org, Natanael Copa <ncopa@alpinelinux.org> + Date: Tue, 16 Dec 2014 09:28:57 +0100 + + This fixes the following compile error with musl libc: + getrpcent.c:65:16: error: field 'rpc' has incomplete type + struct rpcent rpc; + ^ + + Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> + --- + This patch could probably be better. It assumes that only GNU libc has + the rpcent struct defined, but the BSDs probably has it too. + + I am not sure if uClibc has it, but uClibc does define __GLIBC__ so it + might be broken there too. + + I looked into using AC_CHECK_MEMBER but I don't think it is a good idea + so depend on config.h since this is a header that will be installed on + the system. + + I also found out that struct rpcent is also defined in + /usr/include/gssrpc/netdb.h but I am unsure if we can depend on that + too since GSS is optional. + + So I am a bit in doubt what the proper fix is. Meanwhile, this works + for musl libc. + +We fix the uClibc case by checking for __UCLIBC__ as well, since uClibc will +define __GLIBC__ as well (why?) as __UCLIBC__. This should not affect the +musl case. +--- + +diff -Naurp libtirpc-1.0.1.orig/tirpc/rpc/rpcent.h libtirpc-1.0.1/tirpc/rpc/rpcent.h +--- libtirpc-1.0.1.orig/tirpc/rpc/rpcent.h 2015-10-30 15:15:14.000000000 +0000 ++++ libtirpc-1.0.1/tirpc/rpc/rpcent.h 2017-07-05 04:58:27.141468000 +0000 +@@ -49,7 +49,7 @@ extern "C" { + #endif + + /* These are defined in /usr/include/rpc/netdb.h */ +-#if !defined(__GLIBC__) ++#if !defined(__GLIBC__) || defined(__UCLIBC__) + struct rpcent { + char *r_name; /* name of server for this rpc program */ + char **r_aliases; /* alias list */ diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1_uclibc-use-memset-not-bzero.patch b/net-libs/libtirpc/files/libtirpc-1.0.1_uclibc-use-memset-not-bzero.patch new file mode 100644 index 000000000000..f7657f74db43 --- /dev/null +++ b/net-libs/libtirpc/files/libtirpc-1.0.1_uclibc-use-memset-not-bzero.patch @@ -0,0 +1,21 @@ +Inspired by a similar fix here: +http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/packages/nfs-utils/files/uclibc_bzero_fix.patch?id=39d8c0fc4a9d14b7bad1442e05c536e28b196a47 + +Because uclibc does not have a working implementation of `__bzero'. +--- + +diff -Naurp libtirpc-1.0.1.orig/src/des_impl.c libtirpc-1.0.1/src/des_impl.c +--- libtirpc-1.0.1.orig/src/des_impl.c 2017-07-05 06:16:07.441468000 +0000 ++++ libtirpc-1.0.1/src/des_impl.c 2017-07-05 06:19:57.351468000 +0000 +@@ -588,7 +588,11 @@ _des_crypt (char *buf, unsigned len, str + } + tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0; + tbuf[0] = tbuf[1] = 0; ++#ifndef __UCLIBC__ + __bzero (schedule, sizeof (schedule)); ++#else ++ memset (schedule, 0, sizeof (schedule)); ++#endif + + return (1); + } diff --git a/net-libs/libtirpc/libtirpc-1.0.1-r2.ebuild b/net-libs/libtirpc/libtirpc-1.0.1-r2.ebuild new file mode 100644 index 000000000000..7a836805185b --- /dev/null +++ b/net-libs/libtirpc/libtirpc-1.0.1-r2.ebuild @@ -0,0 +1,66 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="5" + +inherit multilib-minimal toolchain-funcs eutils + +DESCRIPTION="Transport Independent RPC library (SunRPC replacement)" +HOMEPAGE="http://libtirpc.sourceforge.net/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2 + mirror://gentoo/${PN}-glibc-nfs.tar.xz" + +LICENSE="GPL-2" +SLOT="0/3" # subslot matches SONAME major +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" +IUSE="ipv6 kerberos static-libs" + +RDEPEND="kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )" +DEPEND="${RDEPEND} + app-arch/xz-utils + >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]" + +PATCHES=( + "${FILESDIR}/${P}-CVE-2017-8779.patch" + "${FILESDIR}/${P}_uclibc-dont-use-struct-rpcent.patch" + "${FILESDIR}/${P}_ifdef-out-yp-headers-742bbdff6ddf.patch" + "${FILESDIR}/${P}_remove-nis-h-dep-5f00f8c78c5d.patch" + "${FILESDIR}/${P}_add-des_impl-c-7f6bb9a3467a.patch" + "${FILESDIR}/${P}_remove-des-deps-to-glibc-503ac2e9fa56.patch" + "${FILESDIR}/${P}_uclibc-use-memset-not-bzero.patch" +) + +src_prepare() { + cp -r "${WORKDIR}"/tirpc "${S}"/ || die + epatch "${PATCHES[@]}" + epatch_user +} + +multilib_src_configure() { + ECONF_SOURCE=${S} \ + econf \ + $(use_enable ipv6) \ + $(use_enable kerberos gssapi) \ + $(use_enable static-libs static) +} + +multilib_src_install() { + default + + # libtirpc replaces rpc support in glibc, so we need it in / + gen_usr_ldscript -a tirpc +} + +multilib_src_install_all() { + einstalldocs + + insinto /etc + doins doc/netconfig + + insinto /usr/include/tirpc + doins -r "${WORKDIR}"/tirpc/* + + # makes sure that the linking order for nfs-utils is proper, as + # libtool would inject a libgssglue dependency in the list. + use static-libs || prune_libtool_files +} |