From 5f1f1be3e121bfd9e022e65af303caf21924d886 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Thu, 12 Apr 2018 10:40:28 -0400 Subject: [PATCH] Restore the use of reserve ports in clnt_create (bz 1562169) Signed-off-by: Steve Dickson --- libtirpc-1.0.3-clntcreate.patch | 64 +++++++++++++++++++++++++++++++++ libtirpc.spec | 11 ++++-- 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 libtirpc-1.0.3-clntcreate.patch diff --git a/libtirpc-1.0.3-clntcreate.patch b/libtirpc-1.0.3-clntcreate.patch new file mode 100644 index 0000000..13079de --- /dev/null +++ b/libtirpc-1.0.3-clntcreate.patch @@ -0,0 +1,64 @@ +commit 2802259184ada839793152ed0a0f130065f82dfd +Author: Steve Dickson +Date: Thu Apr 12 10:24:02 2018 -0400 + + clnt_create: Restore using reserve ports for client connections + + Commit 46e04a73 changed clnt_create(3) not to + use reserve ports when binding a connection to + a server. + + For certain legacy apps, like some of the NIS commands, + the client has to used reserve port to be able + to communicate with the server. + + So the use of reserve ports in clnt_create(3) + has been restored. + + Signed-off-by: Steve Dickson + +diff --git a/src/clnt_generic.c b/src/clnt_generic.c +index e5a314f..3f3dabf 100644 +--- a/src/clnt_generic.c ++++ b/src/clnt_generic.c +@@ -47,7 +47,6 @@ + + extern bool_t __rpc_is_local_host(const char *); + int __rpc_raise_fd(int); +-extern int __binddynport(int fd); + + #ifndef NETIDLEN + #define NETIDLEN 32 +@@ -341,8 +340,7 @@ clnt_tli_create(int fd, const struct netconfig *nconf, + servtype = nconf->nc_semantics; + if (!__rpc_fd2sockinfo(fd, &si)) + goto err; +- if (__binddynport(fd) == -1) +- goto err; ++ bindresvport(fd, NULL); + } else { + if (!__rpc_fd2sockinfo(fd, &si)) + goto err; +diff --git a/src/rpc_soc.c b/src/rpc_soc.c +index af6c482..5a6eeb7 100644 +--- a/src/rpc_soc.c ++++ b/src/rpc_soc.c +@@ -67,8 +67,6 @@ + + extern mutex_t rpcsoc_lock; + +-extern int __binddynport(int fd); +- + static CLIENT *clnt_com_create(struct sockaddr_in *, rpcprog_t, rpcvers_t, + int *, u_int, u_int, char *, int); + static SVCXPRT *svc_com_create(int, u_int, u_int, char *); +@@ -147,8 +145,7 @@ clnt_com_create(raddr, prog, vers, sockp, sendsz, recvsz, tp, flags) + bindaddr.maxlen = bindaddr.len = sizeof (struct sockaddr_in); + bindaddr.buf = raddr; + +- if (__binddynport(fd) == -1) +- goto err; ++ bindresvport(fd, NULL); + cl = clnt_tli_create(fd, nconf, &bindaddr, prog, vers, + sendsz, recvsz); + if (cl) { diff --git a/libtirpc.spec b/libtirpc.spec index b1061a7..6b65051 100644 --- a/libtirpc.spec +++ b/libtirpc.spec @@ -2,13 +2,15 @@ Name: libtirpc Version: 1.0.3 -Release: 0%{?dist} +Release: 1%{?dist} Summary: Transport Independent RPC Library Group: System Environment/Libraries License: SISSL and BSD URL: http://nfsv4.bullopensource.org/ Source0: http://downloads.sourceforge.net/libtirpc/libtirpc-%{version}.tar.bz2 +Patch001: libtirpc-1.0.3-clntcreate.patch + BuildRequires: automake, autoconf, libtool, pkgconfig BuildRequires: krb5-devel @@ -36,7 +38,7 @@ developing programs which use the tirpc library. %prep -%setup -q +%autosetup -p1 # Remove .orig files find . -name "*.orig" | xargs rm -f @@ -127,7 +129,10 @@ mv %{buildroot}%{_mandir}/man3 %{buildroot}%{_mandir}/man3t %{_mandir}/*/* %changelog -* Wed Mar 14 2018 Steve Dickson 1.0.2-0 +* Thu Apr 12 2018 Steve Dickson 1.0.3-1 +- Restore the use of reserve ports in clnt_create (bz 1562169) + +* Wed Mar 14 2018 Steve Dickson 1.0.3-0 - Update to latest upstream release: libtirpc-1-0-3 * Tue Mar 6 2018 Steve Dickson 1.0.2-6.rc2