commit dad23d30597cdd0a5b5031046f4e0c4364c1f5e0 Author: Juergen Daubert <jue@jue.li> Date: Fri Jun 19 21:13:15 2015 +0200 libtirpc: fix erroneous remove of the __rpc_get_default_domain() interface diff --git a/libtirpc/.md5sum b/libtirpc/.md5sum index 3c34169..f172177 100644 --- a/libtirpc/.md5sum +++ b/libtirpc/.md5sum @@ -1 +1,2 @@ 373d5ad46b1d19759ec763a9f0afcf4d libtirpc-0.3.2.tar.bz2 +5b974a1204defec51255b83a029bbb2b rpc_get_default_domain.patch diff --git a/libtirpc/Pkgfile b/libtirpc/Pkgfile index 4395b68..ae03770 100644 --- a/libtirpc/Pkgfile +++ b/libtirpc/Pkgfile @@ -4,12 +4,16 @@ name=libtirpc version=0.3.2 -release=1 -source=(http://downloads.sourceforge.net/project/$name/$name/$version/$name-$version...) +release=2 +source=(http://downloads.sourceforge.net/project/$name/$name/$version/$name-$version... + rpc_get_default_domain.patch) build() { cd $name-$version + patch -p1 -i $SRC/rpc_get_default_domain.patch + + autoreconf ./configure --prefix=/usr \ --sysconfdir=/etc \ --mandir=/usr/man \ diff --git a/libtirpc/rpc_get_default_domain.patch b/libtirpc/rpc_get_default_domain.patch new file mode 100644 index 0000000..dc0635b --- /dev/null +++ b/libtirpc/rpc_get_default_domain.patch @@ -0,0 +1,104 @@ +commit f7f6d01a83d136c98acbc1d7f098da25097bd0b6 +Author: Armin K <krejzi@email.com> +Date: Thu Jun 18 11:59:18 2015 -0400 + + __rpc_get_default_domain is undefined with LDFLAGS=-Wl,--no-undefined + + commit 109ccb9fe removed the __rpc_get_default_domain() + interface which is not defined in the glibc. This + brings the interface back. + + Reviewed-by: Chuck Lever <chuck.lever@oracle.com> + Signed-off-by: Steve Dickson <steved@redhat.com> + +diff --git a/src/Makefile.am b/src/Makefile.am +index 6cc567a..66fcc6c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -69,7 +69,7 @@ if GSS + endif + + libtirpc_la_SOURCES += key_call.c key_prot_xdr.c getpublickey.c +-libtirpc_la_SOURCES += netname.c netnamer.c rtime.c ++libtirpc_la_SOURCES += netname.c netnamer.c rpcdname.c rtime.c + + CLEANFILES = cscope.* *~ + DISTCLEANFILES = Makefile.in +diff --git a/src/rpcdname.c b/src/rpcdname.c +new file mode 100644 +index 0000000..3e6a988 +--- /dev/null ++++ b/src/rpcdname.c +@@ -0,0 +1,72 @@ ++/* ++ * Copyright (c) 2009, Sun Microsystems, 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 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. ++ */ ++ ++/* ++ * rpcdname.c ++ * Gets the default domain name ++ */ ++ ++#include <stdlib.h> ++#include <unistd.h> ++#include <string.h> ++ ++static char *default_domain = 0; ++ ++static char * ++get_default_domain() ++{ ++ char temp[256]; ++ ++ if (default_domain) ++ return (default_domain); ++ if (getdomainname(temp, sizeof(temp)) < 0) ++ return (0); ++ if ((int) strlen(temp) > 0) { ++ default_domain = (char *)malloc((strlen(temp)+(unsigned)1)); ++ if (default_domain == 0) ++ return (0); ++ (void) strcpy(default_domain, temp); ++ return (default_domain); ++ } ++ return (0); ++} ++ ++/* ++ * This is a wrapper for the system call getdomainname which returns a ++ * ypclnt.h error code in the failure case. It also checks to see that ++ * the domain name is non-null, knowing that the null string is going to ++ * get rejected elsewhere in the NIS client package. ++ */ ++int ++__rpc_get_default_domain(domain) ++ char **domain; ++{ ++ if ((*domain = get_default_domain()) != 0) ++ return (0); ++ return (-1); ++}