summaryrefslogtreecommitdiff
path: root/testing/libtirpc
diff options
context:
space:
mode:
Diffstat (limited to 'testing/libtirpc')
-rw-r--r--testing/libtirpc/PKGBUILD33
-rw-r--r--testing/libtirpc/libtirpc-0.2.1-fortify.patch18
2 files changed, 51 insertions, 0 deletions
diff --git a/testing/libtirpc/PKGBUILD b/testing/libtirpc/PKGBUILD
new file mode 100644
index 000000000..80ae3d14c
--- /dev/null
+++ b/testing/libtirpc/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 132087 2011-07-20 00:51:34Z eric $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libtirpc
+pkgver=0.2.2
+pkgrel=1
+pkgdesc="Transport Independent RPC library (SunRPC replacement)"
+arch=('i686' 'x86_64')
+url="http://libtirpc.sourceforge.net/"
+license=('BSD')
+depends=('libgssglue')
+backup=('etc/netconfig')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/libtirpc/${pkgname}-${pkgver}.tar.bz2
+ libtirpc-0.2.1-fortify.patch)
+md5sums=('74c41c15c2909f7d11d9c7bfa7db6273'
+ '2e5c067f1651469dfbbdc91d3c9c60e8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # fix http://bugs.gentoo.org/293593
+ # https://bugs.archlinux.org/task/20082
+ patch -Np1 -i ../libtirpc-0.2.1-fortify.patch
+ ./configure --prefix=/usr --enable-gss
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 doc/etc_netconfig "${pkgdir}"/etc/netconfig
+ install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/libtirpc/libtirpc-0.2.1-fortify.patch b/testing/libtirpc/libtirpc-0.2.1-fortify.patch
new file mode 100644
index 000000000..7375bf83e
--- /dev/null
+++ b/testing/libtirpc/libtirpc-0.2.1-fortify.patch
@@ -0,0 +1,18 @@
+Index: libtirpc-0.2.1/src/getrpcport.c
+===================================================================
+--- libtirpc-0.2.1.orig/src/getrpcport.c
++++ libtirpc-0.2.1/src/getrpcport.c
+@@ -54,11 +54,11 @@ getrpcport(host, prognum, versnum, proto
+
+ if ((hp = gethostbyname(host)) == NULL)
+ return (0);
++ if (hp->h_length != sizeof(addr.sin_addr.s_addr))
++ return (0);
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_port = 0;
+- if (hp->h_length > sizeof(addr))
+- hp->h_length = sizeof(addr);
+ memcpy(&addr.sin_addr.s_addr, hp->h_addr, (size_t)hp->h_length);
+ /* Inconsistent interfaces need casts! :-( */
+ return (pmap_getport(&addr, (u_long)prognum, (u_long)versnum,