Hello community,
here is the log from the commit of package libtirpc for openSUSE:Factory checked in at 2018-03-24 16:06:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libtirpc (Old)
and /work/SRC/openSUSE:Factory/.libtirpc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libtirpc"
Sat Mar 24 16:06:42 2018 rev:48 rq:589931 version:1.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/libtirpc/libtirpc.changes 2018-03-01 11:59:49.555296631 +0100
+++ /work/SRC/openSUSE:Factory/.libtirpc.new/libtirpc.changes 2018-03-24 16:06:44.290189229 +0100
@@ -1,0 +2,24 @@
+Thu Mar 15 23:10:46 UTC 2018 - jengelh@inai.de
+
+- Remove ineffective --with-pic.
+
+-------------------------------------------------------------------
+Wed Mar 14 16:03:31 CET 2018 - kukuk@suse.de
+
+- Update to libtirpc 1.0.3
+ - clnt_dg_call: Fix a buffer overflow (CVE-2016-4429)
+ - Avoid choosing reserved ports in legacy RPC APIs
+ - rpcinfo: change order of version to be tried to 4, 3, 2
+ - includes 003-rpc-types.patch
+ - includes 004-replace-bzero-with-memset.patch
+ - includes 005-missing-includes.patch
+ - includes 011-Fix-typo-in-src-libtirpc.map-which-prevents-that-key.patch
+ - includes decls.patch
+- Drop COPYING.GPLv2, GPLv2 code was removed from library
+
+-------------------------------------------------------------------
+Mon Mar 5 11:58:44 CET 2018 - kukuk@suse.de
+
+- Adjust include directory [bsc#1083902]
+
+-------------------------------------------------------------------
Old:
----
003-rpc-types.patch
004-replace-bzero-with-memset.patch
005-missing-includes.patch
011-Fix-typo-in-src-libtirpc.map-which-prevents-that-key.patch
COPYING.GPLv2
decls.patch
libtirpc-1.0.2.tar.bz2
New:
----
libtirpc-1.0.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libtirpc.spec ++++++
--- /var/tmp/diff_new_pack.uqThaF/_old 2018-03-24 16:06:45.142158516 +0100
+++ /var/tmp/diff_new_pack.uqThaF/_new 2018-03-24 16:06:45.142158516 +0100
@@ -18,10 +18,10 @@
Name: libtirpc
# src/crypt_client.c and tirpc/rpcsvc/crypt.x have the BSD advertising clause
-Version: 1.0.2
+Version: 1.0.3
Release: 0
Summary: Transport Independent RPC Library
-License: BSD-3-Clause AND GPL-2.0+
+License: BSD-3-Clause
Group: Development/Libraries/C and C++
%if 0%{suse_version} >= 1300
BuildRequires: krb5-mini-devel
@@ -31,18 +31,12 @@
BuildRequires: autoconf
BuildRequires: libtool
BuildRequires: pkg-config
-Url: http://sourceforge.net/projects/libtirpc/
+Url: https://sourceforge.net/projects/libtirpc/
Source: %{name}-%{version}.tar.bz2
Source1: baselibs.conf
-Source2: COPYING.GPLv2
Patch0: 000-bindresvport_blacklist.patch
# only needed on openSUSE >= 13.1, SLE >= 12
Patch1: 001-new-rpcbindsock-path.patch
-Patch3: 003-rpc-types.patch
-Patch4: 004-replace-bzero-with-memset.patch
-Patch5: 005-missing-includes.patch
-Patch11: 011-Fix-typo-in-src-libtirpc.map-which-prevents-that-key.patch
-Patch12: decls.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define debug_package_requires libtirpc3 = %{version}-%{release}
@@ -91,21 +85,14 @@
%if 0%{suse_version} >= 1310
%patch1 -p1
%endif
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch11 -p1
-%patch12 -p1
%build
+sed -i -e 's|@includedir@/tirpc|@includedir@|g' libtirpc.pc.in
%configure --disable-static \
- --with-pic \
%if 0%{suse_version} < 1200
--disable-gssapi \
%endif
--libdir=/%{_lib}
-# Copy GPLv2 COPYING
-cp %{SOURCE2} .
make %{?_smp_mflags}
%install
@@ -130,7 +117,7 @@
%files -n libtirpc3
%defattr(-,root,root)
-%license COPYING COPYING.GPLv2
+%license COPYING
/%{_lib}/libtirpc.so.3*
%files netconfig
++++++ libtirpc-1.0.2.tar.bz2 -> libtirpc-1.0.3.tar.bz2 ++++++
++++ 1957 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/compile new/libtirpc-1.0.3/compile
--- old/libtirpc-1.0.2/compile 2017-07-05 17:04:37.000000000 +0200
+++ new/libtirpc-1.0.3/compile 2018-03-14 14:56:24.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2016-01-11.22; # UTC
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
# Written by Tom Tromey .
#
# This program is free software; you can redistribute it and/or modify
@@ -255,7 +255,8 @@
echo "compile $scriptversion"
exit $?
;;
- cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
@@ -342,6 +343,6 @@
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/configure.ac new/libtirpc-1.0.3/configure.ac
--- old/libtirpc-1.0.2/configure.ac 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/configure.ac 2018-03-14 14:55:12.000000000 +0100
@@ -1,4 +1,4 @@
-AC_INIT(libtirpc, 1.0.2)
+AC_INIT(libtirpc, 1.0.3)
AM_INIT_AUTOMAKE([silent-rules])
AM_SILENT_RULES([yes])
AC_CONFIG_SRCDIR([src/auth_des.c])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/missing new/libtirpc-1.0.3/missing
--- old/libtirpc-1.0.2/missing 2017-07-05 17:04:37.000000000 +0200
+++ new/libtirpc-1.0.3/missing 2018-03-14 14:56:24.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2013-10-28.13; # UTC
+scriptversion=2016-01-11.22; # UTC
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
@@ -210,6 +210,6 @@
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/Makefile.am new/libtirpc-1.0.3/src/Makefile.am
--- old/libtirpc-1.0.2/src/Makefile.am 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/Makefile.am 2018-03-14 14:55:12.000000000 +0100
@@ -15,8 +15,9 @@
libtirpc_la_LDFLAGS = @LDFLAG_NOUNDEFINED@ -no-undefined -lpthread
libtirpc_la_LDFLAGS += -version-info @LT_VERSION_INFO@
-libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c clnt_bcast.c \
- clnt_dg.c clnt_generic.c clnt_perror.c clnt_raw.c clnt_simple.c \
+libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c \
+ binddynport.c bindresvport.c \
+ clnt_bcast.c clnt_dg.c clnt_generic.c clnt_perror.c clnt_raw.c clnt_simple.c \
clnt_vc.c rpc_dtablesize.c getnetconfig.c getnetpath.c getrpcent.c \
getrpcport.c mt_misc.c pmap_clnt.c pmap_getmaps.c pmap_getport.c \
pmap_prot.c pmap_prot2.c pmap_rmt.c rpc_prot.c rpc_commondata.c \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/auth_time.c new/libtirpc-1.0.3/src/auth_time.c
--- old/libtirpc-1.0.2/src/auth_time.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/auth_time.c 2018-03-14 14:55:12.000000000 +0100
@@ -317,7 +317,7 @@
sprintf(ipuaddr, "%d.%d.%d.%d.0.111", a1, a2, a3, a4);
useua = &ipuaddr[0];
- bzero((char *)&sin, sizeof(sin));
+ memset(&sin, 0, sizeof(sin));
if (uaddr_to_sockaddr(useua, &sin)) {
msg("unable to translate uaddr to sockaddr.");
if (needfree)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/binddynport.c new/libtirpc-1.0.3/src/binddynport.c
--- old/libtirpc-1.0.2/src/binddynport.c 1970-01-01 01:00:00.000000000 +0100
+++ new/libtirpc-1.0.3/src/binddynport.c 2018-03-14 14:55:12.000000000 +0100
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2018, Oracle America, Inc.
+ * All rights reserved.
+ *
+ * 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 "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.
+ */
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+
+#include "reentrant.h"
+#include "rpc_com.h"
+
+extern pthread_mutex_t port_lock;
+
+/*
+ * Dynamic port range as defined in RFC 6335 Section 6.
+ * This range avoids all IANA-assigned service port
+ * numbers.
+ */
+enum {
+ LOWPORT = 49152,
+ ENDPORT = 65534,
+ NPORTS = ENDPORT - LOWPORT + 1,
+};
+
+/*
+ * Bind a socket to a dynamically-assigned IP port.
+ *
+ * @fd is an open but unbound socket.
+ *
+ * On each call, a port number is chosen at random from
+ * within the dynamic/private port range, even if the
+ * caller has CAP_NET_ADMIN_BIND.
+ *
+ * Returns 0 on success, -1 on failure. errno may be
+ * set to a non-determinant value.
+ *
+ * This function is re-entrant.
+ */
+int __binddynport(int fd)
+{
+ struct sockaddr_storage ss;
+#ifdef INET6
+ struct sockaddr_in6 *sin6;
+#endif
+ struct sockaddr_in *sin;
+ static unsigned int seed;
+ in_port_t port, *portp;
+ struct sockaddr *sap;
+ socklen_t salen;
+ int i, res;
+
+ if (__rpc_sockisbound(fd))
+ return 0;
+
+ res = -1;
+ sap = (struct sockaddr *)(void *)&ss;
+ salen = sizeof(ss);
+ memset(sap, 0, salen);
+
+ mutex_lock(&port_lock);
+
+ if (getsockname(fd, sap, &salen) == -1)
+ goto out;
+
+ switch (ss.ss_family) {
+ case AF_INET:
+ sin = (struct sockaddr_in *)(void *)&ss;
+ portp = &sin->sin_port;
+ salen = sizeof(struct sockaddr_in);
+ break;
+#ifdef INET6
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *)(void *)&ss;
+ portp = &sin6->sin6_port;
+ salen = sizeof(struct sockaddr_in6);
+ break;
+#endif
+ default:
+ goto out;
+ }
+
+ if (!seed) {
+ struct timeval tv;
+
+ gettimeofday(&tv, NULL);
+ seed = tv.tv_usec * getpid();
+ }
+ port = (rand_r(&seed) % NPORTS) + LOWPORT;
+ for (i = 0; i < NPORTS; ++i) {
+ *portp = htons(port++);
+ res = bind(fd, sap, salen);
+ if (res >= 0) {
+ res = 0;
+ break;
+ }
+ if (errno != EADDRINUSE)
+ break;
+ if (port > ENDPORT)
+ port = LOWPORT;
+ }
+
+out:
+ mutex_unlock(&port_lock);
+ return res;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/clnt_dg.c new/libtirpc-1.0.3/src/clnt_dg.c
--- old/libtirpc-1.0.2/src/clnt_dg.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/clnt_dg.c 2018-03-14 14:55:12.000000000 +0100
@@ -430,9 +430,14 @@
struct sockaddr_in err_addr;
struct sockaddr_in *sin = (struct sockaddr_in *)&cu->cu_raddr;
struct iovec iov;
- char *cbuf = (char *) alloca (outlen + 256);
+ char *cbuf = (char *) mem_alloc((outlen + 256));
int ret;
+ if (cbuf == NULL)
+ {
+ cu->cu_error.re_errno = errno;
+ return (cu->cu_error.re_status = RPC_CANTRECV);
+ }
iov.iov_base = cbuf + 256;
iov.iov_len = outlen;
msg.msg_name = (void *) &err_addr;
@@ -457,11 +462,13 @@
cmsg = CMSG_NXTHDR (&msg, cmsg))
if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_RECVERR)
{
+ mem_free(cbuf, (outlen + 256));
e = (struct sock_extended_err *) CMSG_DATA(cmsg);
cu->cu_error.re_errno = e->ee_errno;
release_fd_lock(cu->cu_fd, mask);
return (cu->cu_error.re_status = RPC_CANTRECV);
}
+ mem_free(cbuf, (outlen + 256));
}
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/clnt_generic.c new/libtirpc-1.0.3/src/clnt_generic.c
--- old/libtirpc-1.0.2/src/clnt_generic.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/clnt_generic.c 2018-03-14 14:55:12.000000000 +0100
@@ -47,6 +47,7 @@
extern bool_t __rpc_is_local_host(const char *);
int __rpc_raise_fd(int);
+extern int __binddynport(int fd);
#ifndef NETIDLEN
#define NETIDLEN 32
@@ -340,7 +341,8 @@
servtype = nconf->nc_semantics;
if (!__rpc_fd2sockinfo(fd, &si))
goto err;
- bindresvport(fd, NULL);
+ if (__binddynport(fd) == -1)
+ goto err;
} else {
if (!__rpc_fd2sockinfo(fd, &si))
goto err;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/debug.c new/libtirpc-1.0.3/src/debug.c
--- old/libtirpc-1.0.2/src/debug.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/debug.c 2018-03-14 14:55:12.000000000 +0100
@@ -3,20 +3,28 @@
*
* Copyright (C) 2014 Red Hat, Steve Dickson
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
+ * 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 Sun Microsystems, 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.
*/
#include
#include
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/debug.h new/libtirpc-1.0.3/src/debug.h
--- old/libtirpc-1.0.2/src/debug.h 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/debug.h 2018-03-14 14:55:12.000000000 +0100
@@ -3,20 +3,28 @@
*
* Copyright (C) 2014 Red Hat, Steve Dickson
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
+ * 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 Sun Microsystems, 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 _DEBUG_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/des_impl.c new/libtirpc-1.0.3/src/des_impl.c
--- old/libtirpc-1.0.2/src/des_impl.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/des_impl.c 2018-03-14 14:55:12.000000000 +0100
@@ -588,7 +588,7 @@
}
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
tbuf[0] = tbuf[1] = 0;
- __bzero (schedule, sizeof (schedule));
+ memset (schedule, 0, sizeof (schedule));
return (1);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/libtirpc.map new/libtirpc-1.0.3/src/libtirpc.map
--- old/libtirpc-1.0.2/src/libtirpc.map 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/libtirpc.map 2018-03-14 14:55:12.000000000 +0100
@@ -298,7 +298,7 @@
key_gendes;
key_get_conv;
key_setsecret;
- key_secret_is_set;
+ key_secretkey_is_set;
key_setnet;
netname2host;
netname2user;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/rpc_soc.c new/libtirpc-1.0.3/src/rpc_soc.c
--- old/libtirpc-1.0.2/src/rpc_soc.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/rpc_soc.c 2018-03-14 14:55:12.000000000 +0100
@@ -67,6 +67,8 @@
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 *);
@@ -145,7 +147,8 @@
bindaddr.maxlen = bindaddr.len = sizeof (struct sockaddr_in);
bindaddr.buf = raddr;
- bindresvport(fd, NULL);
+ if (__binddynport(fd) == -1)
+ goto err;
cl = clnt_tli_create(fd, nconf, &bindaddr, prog, vers,
sendsz, recvsz);
if (cl) {
@@ -313,7 +316,6 @@
SVCXPRT *svc;
int madefd = FALSE;
int port;
- struct sockaddr_in sin;
if ((nconf = __rpc_getconfip(netid)) == NULL) {
(void) syslog(LOG_ERR, "Could not get %s transport", netid);
@@ -330,10 +332,6 @@
madefd = TRUE;
}
- memset(&sin, 0, sizeof sin);
- sin.sin_family = AF_INET;
- bindresvport(fd, &sin);
- listen(fd, SOMAXCONN);
svc = svc_tli_create(fd, nconf, NULL, sendsize, recvsize);
(void) freenetconfigent(nconf);
if (svc == NULL) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/rpcb_clnt.c new/libtirpc-1.0.3/src/rpcb_clnt.c
--- old/libtirpc-1.0.2/src/rpcb_clnt.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/rpcb_clnt.c 2018-03-14 14:55:12.000000000 +0100
@@ -729,14 +729,83 @@
}
#endif
+#ifdef PORTMAP
+static struct netbuf *
+__try_protocol_version_2(program, version, nconf, host, tp)
+ rpcprog_t program;
+ rpcvers_t version;
+ const struct netconfig *nconf;
+ const char *host;
+ struct timeval *tp;
+{
+ u_short port = 0;
+ struct netbuf remote;
+ struct pmap pmapparms;
+ CLIENT *client = NULL;
+ enum clnt_stat clnt_st;
+ struct netbuf *pmapaddress;
+ RPCB parms;
+
+ if (strcmp(nconf->nc_proto, NC_UDP) != 0
+ && strcmp(nconf->nc_proto, NC_TCP) != 0)
+ return (NULL);
+
+ client = getpmaphandle(nconf, host, &parms.r_addr);
+ if (client == NULL)
+ return (NULL);
+
+ /*
+ * Set retry timeout.
+ */
+ CLNT_CONTROL(client, CLSET_RETRY_TIMEOUT, (char *)&rpcbrmttime);
+
+ pmapparms.pm_prog = program;
+ pmapparms.pm_vers = version;
+ pmapparms.pm_prot = strcmp(nconf->nc_proto, NC_TCP) ?
+ IPPROTO_UDP : IPPROTO_TCP;
+ pmapparms.pm_port = 0; /* not needed */
+ clnt_st = CLNT_CALL(client, (rpcproc_t)PMAPPROC_GETPORT,
+ (xdrproc_t) xdr_pmap, (caddr_t)(void *)&pmapparms,
+ (xdrproc_t) xdr_u_short, (caddr_t)(void *)&port,
+ *tp);
+ if (clnt_st != RPC_SUCCESS) {
+ rpc_createerr.cf_stat = RPC_PMAPFAILURE;
+ clnt_geterr(client, &rpc_createerr.cf_error);
+ return (NULL);
+ } else if (port == 0) {
+ pmapaddress = NULL;
+ rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED;
+ return (NULL);
+ }
+ port = htons(port);
+ CLNT_CONTROL(client, CLGET_SVC_ADDR, (char *)&remote);
+ if (((pmapaddress = (struct netbuf *)
+ malloc(sizeof (struct netbuf))) == NULL) ||
+ ((pmapaddress->buf = (char *)
+ malloc(remote.len)) == NULL)) {
+ rpc_createerr.cf_stat = RPC_SYSTEMERROR;
+ clnt_geterr(client, &rpc_createerr.cf_error);
+ if (pmapaddress) {
+ free(pmapaddress);
+ pmapaddress = NULL;
+ }
+ return (NULL);
+ }
+ memcpy(pmapaddress->buf, remote.buf, remote.len);
+ memcpy(&((char *)pmapaddress->buf)[sizeof (short)],
+ (char *)(void *)&port, sizeof (short));
+ pmapaddress->len = pmapaddress->maxlen = remote.len;
+
+ return pmapaddress;
+}
+#endif
+
/*
* An internal function which optimizes rpcb_getaddr function. It also
* returns the client handle that it uses to contact the remote rpcbind.
*
* The algorithm used: If the transports is TCP or UDP, it first tries
- * version 2 (portmap), 4 and then 3 (svr4). This order should be
- * changed in the next OS release to 4, 2 and 3. We are assuming that by
- * that time, version 4 would be available on many machines on the network.
+ * version 4 (srv4), then 3 and then fall back to version 2 (portmap).
* With this algorithm, we get performance as well as a plan for
* obsoleting version 2.
*
@@ -781,71 +850,6 @@
*/
if (tp == NULL)
tp = &tottimeout;
-
-#ifdef PORTMAP
- /* Try version 2 for TCP or UDP */
- if (strcmp(nconf->nc_protofmly, NC_INET) == 0) {
- u_short port = 0;
- struct netbuf remote;
- struct pmap pmapparms;
-
- if (strcmp(nconf->nc_proto, NC_UDP) != 0
- && strcmp(nconf->nc_proto, NC_TCP) != 0)
- goto try_rpcbind;
-
- client = getpmaphandle(nconf, host, &parms.r_addr);
- if (client == NULL)
- return (NULL);
-
- /*
- * Set retry timeout.
- */
- CLNT_CONTROL(client, CLSET_RETRY_TIMEOUT, (char *)&rpcbrmttime);
-
- pmapparms.pm_prog = program;
- pmapparms.pm_vers = version;
- pmapparms.pm_prot = strcmp(nconf->nc_proto, NC_TCP) ?
- IPPROTO_UDP : IPPROTO_TCP;
- pmapparms.pm_port = 0; /* not needed */
- clnt_st = CLNT_CALL(client, (rpcproc_t)PMAPPROC_GETPORT,
- (xdrproc_t) xdr_pmap, (caddr_t)(void *)&pmapparms,
- (xdrproc_t) xdr_u_short, (caddr_t)(void *)&port,
- *tp);
- if (clnt_st != RPC_SUCCESS) {
- if ((clnt_st == RPC_PROGVERSMISMATCH) ||
- (clnt_st == RPC_PROGUNAVAIL))
- goto try_rpcbind;
- rpc_createerr.cf_stat = RPC_PMAPFAILURE;
- clnt_geterr(client, &rpc_createerr.cf_error);
- goto error;
- } else if (port == 0) {
- address = NULL;
- rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED;
- goto error;
- }
- port = htons(port);
- CLNT_CONTROL(client, CLGET_SVC_ADDR, (char *)&remote);
- if (((address = (struct netbuf *)
- malloc(sizeof (struct netbuf))) == NULL) ||
- ((address->buf = (char *)
- malloc(remote.len)) == NULL)) {
- rpc_createerr.cf_stat = RPC_SYSTEMERROR;
- clnt_geterr(client, &rpc_createerr.cf_error);
- if (address) {
- free(address);
- address = NULL;
- }
- goto error;
- }
- memcpy(address->buf, remote.buf, remote.len);
- memcpy(&((char *)address->buf)[sizeof (short)],
- (char *)(void *)&port, sizeof (short));
- address->len = address->maxlen = remote.len;
- goto done;
- }
-
-try_rpcbind:
-#endif /* PORTMAP */
parms.r_prog = program;
parms.r_vers = version;
@@ -923,6 +927,14 @@
}
}
+#ifdef PORTMAP /* Try version 2 for TCP or UDP */
+ if (strcmp(nconf->nc_protofmly, NC_INET) == 0) {
+ address = __try_protocol_version_2(program, 2, nconf, host, tp);
+ if (address == NULL)
+ goto error;
+ }
+#endif /* PORTMAP */
+
if ((address == NULL) || (address->len == 0)) {
rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED;
clnt_geterr(client, &rpc_createerr.cf_error);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/svc_auth_des.c new/libtirpc-1.0.3/src/svc_auth_des.c
--- old/libtirpc-1.0.2/src/svc_auth_des.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/svc_auth_des.c 2018-03-14 14:55:12.000000000 +0100
@@ -356,7 +356,7 @@
authdes_cache = (struct cache_entry *)
mem_alloc(sizeof(struct cache_entry) * AUTHDES_CACHESZ);
- bzero((char *)authdes_cache,
+ memset(authdes_cache, 0,
sizeof(struct cache_entry) * AUTHDES_CACHESZ);
authdes_lru = (short *)mem_alloc(sizeof(short) * AUTHDES_CACHESZ);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/svc_generic.c new/libtirpc-1.0.3/src/svc_generic.c
--- old/libtirpc-1.0.2/src/svc_generic.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/svc_generic.c 2018-03-14 14:55:12.000000000 +0100
@@ -53,6 +53,7 @@
#include
extern int __svc_vc_setflag(SVCXPRT *, int);
+extern int __binddynport(int fd);
/*
* The highest level interface for server creation.
@@ -220,15 +221,10 @@
*/
if (madefd || !__rpc_sockisbound(fd)) {
if (bindaddr == NULL) {
- if (bindresvport(fd, NULL) < 0) {
- memset(&ss, 0, sizeof ss);
- ss.ss_family = si.si_af;
- if (bind(fd, (struct sockaddr *)(void *)&ss,
- (socklen_t)si.si_alen) < 0) {
- warnx(
+ if (__binddynport(fd) == -1) {
+ warnx(
"svc_tli_create: could not bind to anonymous port");
- goto freedata;
- }
+ goto freedata;
}
listen(fd, SOMAXCONN);
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/src/xdr_sizeof.c new/libtirpc-1.0.3/src/xdr_sizeof.c
--- old/libtirpc-1.0.2/src/xdr_sizeof.c 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/src/xdr_sizeof.c 2018-03-14 14:55:12.000000000 +0100
@@ -39,6 +39,7 @@
#include
#include
#include
+#include
#include "un-namespace.h"
/* ARGSUSED */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/tirpc/rpc/pmap_clnt.h new/libtirpc-1.0.3/tirpc/rpc/pmap_clnt.h
--- old/libtirpc-1.0.2/tirpc/rpc/pmap_clnt.h 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/tirpc/rpc/pmap_clnt.h 2018-03-14 14:55:12.000000000 +0100
@@ -64,6 +64,10 @@
#ifndef _RPC_PMAP_CLNT_H_
#define _RPC_PMAP_CLNT_H_
+#include
+#include
+#include
+
#ifdef __cplusplus
extern "C" {
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libtirpc-1.0.2/tirpc/rpc/types.h new/libtirpc-1.0.3/tirpc/rpc/types.h
--- old/libtirpc-1.0.2/tirpc/rpc/types.h 2017-07-05 17:02:23.000000000 +0200
+++ new/libtirpc-1.0.3/tirpc/rpc/types.h 2018-03-14 14:55:12.000000000 +0100
@@ -65,6 +65,28 @@
#define mem_alloc(bsize) calloc(1, bsize)
#define mem_free(ptr, bsize) free(ptr)
+
+#if defined __APPLE_CC__ || defined __FreeBSD__
+# define __u_char_defined
+# define __daddr_t_defined
+#endif
+
+#ifndef __u_char_defined
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+# define __u_char_defined
+#endif
+#ifndef __daddr_t_defined
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+# define __daddr_t_defined
+#endif
+
#include
#include
#include