summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-libs/libtirpc')
-rw-r--r--net-libs/libtirpc/Manifest1
-rw-r--r--net-libs/libtirpc/files/libtirpc-1.0.1-CVE-2017-8779.patch255
-rw-r--r--net-libs/libtirpc/libtirpc-1.0.1-r1.ebuild60
3 files changed, 0 insertions, 316 deletions
diff --git a/net-libs/libtirpc/Manifest b/net-libs/libtirpc/Manifest
index 5133ab317775..95af0c27cb39 100644
--- a/net-libs/libtirpc/Manifest
+++ b/net-libs/libtirpc/Manifest
@@ -1,4 +1,3 @@
-DIST libtirpc-1.0.1.tar.bz2 495125 BLAKE2B bb282c6d0aa097840758b00b37c73f391aabc234b5a6e51282004c2c46b403e2ca66180b77810ec6009ea9c9a2a6aae7907a15102ff42f51e3e57e151124bf4c SHA512 c9b449e737bc2bd3d56e31e8352f312e89a7ec2a11b73b5ac314e7d82d3b644c611e422b623912453b67b668f86a6de7bb7f18c9495dd15de8e2798ec2ff41c8
DIST libtirpc-1.0.2.tar.bz2 509601 BLAKE2B 7ccf23ca200e2027a66a3105d9b3d0612ac66a08498931f66526a291be6ddef8e7df533af4d44a0e4a1178edd6d51ae39ca50c2536b9b1be7179e7f17cfd165e SHA512 6c819019a8e81d8263d3c509b2eee59ba1ef092222c5a0a8d28f004c711afa252097eca7e6b0b919b2d780883dfd9ee7a363df4cee7fd2c9159a065257637cec
DIST libtirpc-1.0.3.tar.bz2 509831 BLAKE2B 3f908471b3e10f88329793db2c832754b9bb838d115235d7c25256da883960de8d8c94a6941fc9c2a3cc4dca9a77c32b5cb85bb347cc182e5a6255636b79b06e SHA512 1f1cf7dd6f30ddddc919e4caf6db926f1d532f78d5a93e8aaa2acde6b046be0650c4c46549da0ffd5fa7fb9e550af1a871ed6e02ededf504c6667d2e82eba2cc
DIST libtirpc-glibc-nfs.tar.xz 8948 BLAKE2B 7316623d9f2b6928e296137fe2bf6794b208d549c2ffba9e4a35b47f7b04bf023798a09f38c02d039debf6adc466d7689cf3c8274d71a22eaff08729642c0a28 SHA512 90255bf0a27af16164e0710dd940778609925d473f4343093ff19d98cc4f23023788bf4edf0178eae1961afc0ba8b69b273de95b7d7e2afdb706701d8ba6f7ba
diff --git a/net-libs/libtirpc/files/libtirpc-1.0.1-CVE-2017-8779.patch b/net-libs/libtirpc/files/libtirpc-1.0.1-CVE-2017-8779.patch
deleted file mode 100644
index 91a50fad6497..000000000000
--- a/net-libs/libtirpc/files/libtirpc-1.0.1-CVE-2017-8779.patch
+++ /dev/null
@@ -1,255 +0,0 @@
-diff --git a/src/rpc_generic.c b/src/rpc_generic.c
-index 2f09a8f..589cbd5 100644
---- a/src/rpc_generic.c
-+++ b/src/rpc_generic.c
-@@ -615,6 +615,9 @@ __rpc_taddr2uaddr_af(int af, const struct netbuf *nbuf)
-
- switch (af) {
- case AF_INET:
-+ if (nbuf->len < sizeof(*sin)) {
-+ return NULL;
-+ }
- sin = nbuf->buf;
- if (inet_ntop(af, &sin->sin_addr, namebuf, sizeof namebuf)
- == NULL)
-@@ -626,6 +629,9 @@ __rpc_taddr2uaddr_af(int af, const struct netbuf *nbuf)
- break;
- #ifdef INET6
- case AF_INET6:
-+ if (nbuf->len < sizeof(*sin6)) {
-+ return NULL;
-+ }
- sin6 = nbuf->buf;
- if (inet_ntop(af, &sin6->sin6_addr, namebuf6, sizeof namebuf6)
- == NULL)
-@@ -667,6 +673,8 @@ __rpc_uaddr2taddr_af(int af, const char *uaddr)
-
- port = 0;
- sin = NULL;
-+ if (uaddr == NULL)
-+ return NULL;
- addrstr = strdup(uaddr);
- if (addrstr == NULL)
- return NULL;
-diff --git a/src/rpcb_prot.c b/src/rpcb_prot.c
-index 43fd385..a923c8e 100644
---- a/src/rpcb_prot.c
-+++ b/src/rpcb_prot.c
-@@ -41,6 +41,7 @@
- #include <rpc/types.h>
- #include <rpc/xdr.h>
- #include <rpc/rpcb_prot.h>
-+#include "rpc_com.h"
-
- bool_t
- xdr_rpcb(xdrs, objp)
-@@ -53,13 +54,13 @@ xdr_rpcb(xdrs, objp)
- if (!xdr_u_int32_t(xdrs, &objp->r_vers)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->r_netid, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_netid, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->r_addr, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_addr, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->r_owner, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_owner, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- return (TRUE);
-@@ -159,19 +160,19 @@ xdr_rpcb_entry(xdrs, objp)
- XDR *xdrs;
- rpcb_entry *objp;
- {
-- if (!xdr_string(xdrs, &objp->r_maddr, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_maddr, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->r_nc_netid, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_nc_netid, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- if (!xdr_u_int32_t(xdrs, &objp->r_nc_semantics)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->r_nc_protofmly, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_nc_protofmly, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->r_nc_proto, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->r_nc_proto, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- return (TRUE);
-@@ -292,7 +293,7 @@ xdr_rpcb_rmtcallres(xdrs, p)
- bool_t dummy;
- struct r_rpcb_rmtcallres *objp = (struct r_rpcb_rmtcallres *)(void *)p;
-
-- if (!xdr_string(xdrs, &objp->addr, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->addr, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->results.results_len)) {
-@@ -312,6 +313,11 @@ xdr_netbuf(xdrs, objp)
- if (!xdr_u_int32_t(xdrs, (u_int32_t *) &objp->maxlen)) {
- return (FALSE);
- }
-+
-+ if (objp->maxlen > RPC_MAXDATASIZE) {
-+ return (FALSE);
-+ }
-+
- dummy = xdr_bytes(xdrs, (char **)&(objp->buf),
- (u_int *)&(objp->len), objp->maxlen);
- return (dummy);
-diff --git a/src/rpcb_st_xdr.c b/src/rpcb_st_xdr.c
-index 08db745..28e6a48 100644
---- a/src/rpcb_st_xdr.c
-+++ b/src/rpcb_st_xdr.c
-@@ -37,6 +37,7 @@
-
-
- #include <rpc/rpc.h>
-+#include "rpc_com.h"
-
- /* Link list of all the stats about getport and getaddr */
-
-@@ -58,7 +59,7 @@ xdr_rpcbs_addrlist(xdrs, objp)
- if (!xdr_int(xdrs, &objp->failure)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
-
-@@ -109,7 +110,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
- IXDR_PUT_INT32(buf, objp->failure);
- IXDR_PUT_INT32(buf, objp->indirect);
- }
-- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs, (char **)&objp->next,
-@@ -147,7 +148,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
- objp->failure = (int)IXDR_GET_INT32(buf);
- objp->indirect = (int)IXDR_GET_INT32(buf);
- }
-- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs, (char **)&objp->next,
-@@ -175,7 +176,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
- if (!xdr_int(xdrs, &objp->indirect)) {
- return (FALSE);
- }
-- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
-+ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs, (char **)&objp->next,
-diff --git a/src/xdr.c b/src/xdr.c
-index f3fb9ad..b9a1558 100644
---- a/src/xdr.c
-+++ b/src/xdr.c
-@@ -42,8 +42,10 @@
- #include <stdlib.h>
- #include <string.h>
-
-+#include <rpc/rpc.h>
- #include <rpc/types.h>
- #include <rpc/xdr.h>
-+#include <rpc/rpc_com.h>
-
- typedef quad_t longlong_t; /* ANSI long long type */
- typedef u_quad_t u_longlong_t; /* ANSI unsigned long long type */
-@@ -53,7 +55,6 @@ typedef u_quad_t u_longlong_t; /* ANSI unsigned long long type */
- */
- #define XDR_FALSE ((long) 0)
- #define XDR_TRUE ((long) 1)
--#define LASTUNSIGNED ((u_int) 0-1)
-
- /*
- * for unit alignment
-@@ -629,6 +630,7 @@ xdr_bytes(xdrs, cpp, sizep, maxsize)
- {
- char *sp = *cpp; /* sp is the actual string pointer */
- u_int nodesize;
-+ bool_t ret, allocated = FALSE;
-
- /*
- * first deal with the length since xdr bytes are counted
-@@ -652,6 +654,7 @@ xdr_bytes(xdrs, cpp, sizep, maxsize)
- }
- if (sp == NULL) {
- *cpp = sp = mem_alloc(nodesize);
-+ allocated = TRUE;
- }
- if (sp == NULL) {
- warnx("xdr_bytes: out of memory");
-@@ -660,7 +663,14 @@ xdr_bytes(xdrs, cpp, sizep, maxsize)
- /* FALLTHROUGH */
-
- case XDR_ENCODE:
-- return (xdr_opaque(xdrs, sp, nodesize));
-+ ret = xdr_opaque(xdrs, sp, nodesize);
-+ if ((xdrs->x_op == XDR_DECODE) && (ret == FALSE)) {
-+ if (allocated == TRUE) {
-+ free(sp);
-+ *cpp = NULL;
-+ }
-+ }
-+ return (ret);
-
- case XDR_FREE:
- if (sp != NULL) {
-@@ -754,6 +764,7 @@ xdr_string(xdrs, cpp, maxsize)
- char *sp = *cpp; /* sp is the actual string pointer */
- u_int size;
- u_int nodesize;
-+ bool_t ret, allocated = FALSE;
-
- /*
- * first deal with the length since xdr strings are counted-strings
-@@ -793,8 +804,10 @@ xdr_string(xdrs, cpp, maxsize)
- switch (xdrs->x_op) {
-
- case XDR_DECODE:
-- if (sp == NULL)
-+ if (sp == NULL) {
- *cpp = sp = mem_alloc(nodesize);
-+ allocated = TRUE;
-+ }
- if (sp == NULL) {
- warnx("xdr_string: out of memory");
- return (FALSE);
-@@ -803,7 +816,14 @@ xdr_string(xdrs, cpp, maxsize)
- /* FALLTHROUGH */
-
- case XDR_ENCODE:
-- return (xdr_opaque(xdrs, sp, size));
-+ ret = xdr_opaque(xdrs, sp, size);
-+ if ((xdrs->x_op == XDR_DECODE) && (ret == FALSE)) {
-+ if (allocated == TRUE) {
-+ free(sp);
-+ *cpp = NULL;
-+ }
-+ }
-+ return (ret);
-
- case XDR_FREE:
- mem_free(sp, nodesize);
-@@ -823,7 +843,7 @@ xdr_wrapstring(xdrs, cpp)
- XDR *xdrs;
- char **cpp;
- {
-- return xdr_string(xdrs, cpp, LASTUNSIGNED);
-+ return xdr_string(xdrs, cpp, RPC_MAXDATASIZE);
- }
-
- /*
diff --git a/net-libs/libtirpc/libtirpc-1.0.1-r1.ebuild b/net-libs/libtirpc/libtirpc-1.0.1-r1.ebuild
deleted file mode 100644
index 9791662277b2..000000000000
--- a/net-libs/libtirpc/libtirpc-1.0.1-r1.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# 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"
-)
-
-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
-}