[arch-commits] Commit in rpcbind/repos (18 files)
Andreas Radke
andyrtr at archlinux.org
Fri Nov 6 18:38:47 UTC 2015
Date: Friday, November 6, 2015 @ 19:38:46
Author: andyrtr
Revision: 250153
archrelease: copy trunk to staging-i686, staging-x86_64
Added:
rpcbind/repos/staging-i686/
rpcbind/repos/staging-i686/PKGBUILD
(from rev 250152, rpcbind/trunk/PKGBUILD)
rpcbind/repos/staging-i686/bug-940191.patch
(from rev 250152, rpcbind/trunk/bug-940191.patch)
rpcbind/repos/staging-i686/do_not_use_the_xp_auth_pointer_directly.diff
(from rev 250152, rpcbind/trunk/do_not_use_the_xp_auth_pointer_directly.diff)
rpcbind/repos/staging-i686/rpcbind-sunrpc.patch
(from rev 250152, rpcbind/trunk/rpcbind-sunrpc.patch)
rpcbind/repos/staging-i686/rpcbind.conf
(from rev 250152, rpcbind/trunk/rpcbind.conf)
rpcbind/repos/staging-i686/rpcbind.install
(from rev 250152, rpcbind/trunk/rpcbind.install)
rpcbind/repos/staging-i686/rpcbind.service
(from rev 250152, rpcbind/trunk/rpcbind.service)
rpcbind/repos/staging-i686/rpcbind.socket
(from rev 250152, rpcbind/trunk/rpcbind.socket)
rpcbind/repos/staging-x86_64/
rpcbind/repos/staging-x86_64/PKGBUILD
(from rev 250152, rpcbind/trunk/PKGBUILD)
rpcbind/repos/staging-x86_64/bug-940191.patch
(from rev 250152, rpcbind/trunk/bug-940191.patch)
rpcbind/repos/staging-x86_64/do_not_use_the_xp_auth_pointer_directly.diff
(from rev 250152, rpcbind/trunk/do_not_use_the_xp_auth_pointer_directly.diff)
rpcbind/repos/staging-x86_64/rpcbind-sunrpc.patch
(from rev 250152, rpcbind/trunk/rpcbind-sunrpc.patch)
rpcbind/repos/staging-x86_64/rpcbind.conf
(from rev 250152, rpcbind/trunk/rpcbind.conf)
rpcbind/repos/staging-x86_64/rpcbind.install
(from rev 250152, rpcbind/trunk/rpcbind.install)
rpcbind/repos/staging-x86_64/rpcbind.service
(from rev 250152, rpcbind/trunk/rpcbind.service)
rpcbind/repos/staging-x86_64/rpcbind.socket
(from rev 250152, rpcbind/trunk/rpcbind.socket)
-------------------------------------------------------------+
staging-i686/PKGBUILD | 71 ++++++++
staging-i686/bug-940191.patch | 80 ++++++++++
staging-i686/do_not_use_the_xp_auth_pointer_directly.diff | 40 +++++
staging-i686/rpcbind-sunrpc.patch | 11 +
staging-i686/rpcbind.conf | 3
staging-i686/rpcbind.install | 8 +
staging-i686/rpcbind.service | 11 +
staging-i686/rpcbind.socket | 8 +
staging-x86_64/PKGBUILD | 71 ++++++++
staging-x86_64/bug-940191.patch | 80 ++++++++++
staging-x86_64/do_not_use_the_xp_auth_pointer_directly.diff | 40 +++++
staging-x86_64/rpcbind-sunrpc.patch | 11 +
staging-x86_64/rpcbind.conf | 3
staging-x86_64/rpcbind.install | 8 +
staging-x86_64/rpcbind.service | 11 +
staging-x86_64/rpcbind.socket | 8 +
16 files changed, 464 insertions(+)
Copied: rpcbind/repos/staging-i686/PKGBUILD (from rev 250152, rpcbind/trunk/PKGBUILD)
===================================================================
--- staging-i686/PKGBUILD (rev 0)
+++ staging-i686/PKGBUILD 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,71 @@
+# $Id$
+# Maintainer: AndyRTR <andyrtr at archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa at archlinux.org>
+
+pkgname=rpcbind
+pkgver=0.2.3
+pkgrel=3
+pkgdesc="portmap replacement which supports RPC over various protocols"
+arch=(i686 x86_64)
+backup=('etc/conf.d/rpcbind')
+makedepends=('systemd')
+depends=('bash' 'glibc' 'libtirpc' 'libsystemd')
+url="http://rpcbind.sourceforge.net"
+license=('custom')
+replaces=('portmap')
+# see also http://git.infradead.org/users/steved/rpcbind.git
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
+ bug-940191.patch
+ do_not_use_the_xp_auth_pointer_directly.diff
+ rpcbind-sunrpc.patch
+ rpcbind.service
+ rpcbind.socket
+ rpcbind.conf)
+install=rpcbind.install
+sha1sums=('e79974a99d09b6d6fff9d86bf00225dc33723ce2'
+ '717e2700510b1b40f452eddb929a7be00df4292b'
+ '3fa6138b6a559b5b3a5610686ec1de045a0b8d1d'
+ '1b997ce76f9727efc8c72fc5f97189591c9a60e2'
+ '3534c7bcdecebda90182fe2328a16137353cb1ad'
+ 'c52f8396cd05181b788fbdf74898730343c03c9a'
+ '08246ff18d12cee01e5c9391c6ba8f5597cac936')
+
+prepare() {
+ cd $srcdir/$pkgname-$pkgver
+ # patch for iana services file # FS#20273
+ patch -Np1 -i ../rpcbind-sunrpc.patch
+
+ # fix a memory corruption crash when remote scanning
+ # https://bugs.archlinux.org/task/46341
+ # http://seclists.org/oss-sec/2015/q3/581
+ patch -Np1 -i ../bug-940191.patch
+
+ # upstream fix for libtirpc 1.0.1
+ patch -Np1 -i ../do_not_use_the_xp_auth_pointer_directly.diff
+}
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --with-rpcuser=rpc \
+ --enable-warmstarts \
+ --with-statedir=/var/lib/rpcbind
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ # install rpcbind config file
+ install -D -m644 $srcdir/rpcbind.conf $pkgdir/etc/conf.d/rpcbind
+ # install missing man page - https://bugs.archlinux.org/task/21271
+ install -m644 man/rpcinfo.8 $pkgdir/usr/share/man/man8/
+ # install systemd service file
+ install -D -m644 $srcdir/rpcbind.service $pkgdir/usr/lib/systemd/system/rpcbind.service
+ # install system socket activation
+ install -D -m644 $srcdir/rpcbind.socket $pkgdir/usr/lib/systemd/system/rpcbind.socket
+ # add state directory
+ install -d -m 700 -o 32 -g 32 $pkgdir/var/lib/rpcbind
+ # install license
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/rpcbind/COPYING
+}
Copied: rpcbind/repos/staging-i686/bug-940191.patch (from rev 250152, rpcbind/trunk/bug-940191.patch)
===================================================================
--- staging-i686/bug-940191.patch (rev 0)
+++ staging-i686/bug-940191.patch 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,80 @@
+commit 06f7ebb1dade2f0dbf872ea2bedf17cff4734bdd
+Author: Olaf Kirch <okir () suse de>
+Date: Thu Aug 6 16:27:20 2015 +0200
+
+ Fix memory corruption in PMAP_CALLIT code
+
+ - A PMAP_CALLIT call comes in on IPv4 UDP
+ - rpcbind duplicates the caller's address to a netbuf and stores it in
+ FINFO[0].caller_addr. caller_addr->buf now points to a memory region A
+ with a size of 16 bytes
+ - rpcbind forwards the call to the local service, receives a reply
+ - when processing the reply, it does this in xprt_set_caller:
+ xprt->xp_rtaddr = *FINFO[0].caller_addr
+ It sends out the reply, and then frees the netbuf caller_addr and
+ caller_addr.buf.
+ However, it does not clear xp_rtaddr, so xp_rtaddr.buf now refers
+ to memory region A, which is free.
+ - When the next call comes in on the UDP/IPv4 socket, svc_dg_recv will
+ be called, which will set xp_rtaddr to the client's address.
+ It will reuse the buffer inside xp_rtaddr, ie it will write a
+ sockaddr_in to region A
+
+ Some time down the road, an incoming TCP connection is accepted,
+ allocating a fresh SVCXPRT. The memory region A is inside the
+ new SVCXPRT
+
+ - While processing the TCP call, another UDP call comes in, again
+ overwriting region A with the client's address
+ - TCP client closes connection. In svc_destroy, we now trip over
+ the garbage left in region A
+
+ We ran into the case where a commercial scanner was triggering
+ occasional rpcbind segfaults. The core file that was captured showed
+ a corrupted xprt->xp_netid pointer that was really a sockaddr_in.
+
+ Signed-off-by: Olaf Kirch <okir () suse de>
+
+---
+ src/rpcb_svc_com.c | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+Index: rpcbind-0.1.6+git20080930/src/rpcb_svc_com.c
+===================================================================
+--- rpcbind-0.1.6+git20080930.orig/src/rpcb_svc_com.c
++++ rpcbind-0.1.6+git20080930/src/rpcb_svc_com.c
+@@ -1298,12 +1298,33 @@ check_rmtcalls(struct pollfd *pfds, int
+ return (ncallbacks_found);
+ }
+
++/*
++ * This is really a helper function defined in libtirpc, but unfortunately, it hasn't
++ * been exported yet.
++ */
++static struct netbuf *
++__rpc_set_netbuf(struct netbuf *nb, const void *ptr, size_t len)
++{
++ if (nb->len != len) {
++ if (nb->len)
++ mem_free(nb->buf, nb->len);
++ nb->buf = mem_alloc(len);
++ if (nb->buf == NULL)
++ return NULL;
++
++ nb->maxlen = nb->len = len;
++ }
++ memcpy(nb->buf, ptr, len);
++ return nb;
++}
++
+ static void
+ xprt_set_caller(SVCXPRT *xprt, struct finfo *fi)
+ {
++ const struct netbuf *caller = fi->caller_addr;
+ u_int32_t *xidp;
+
+- *(svc_getrpccaller(xprt)) = *(fi->caller_addr);
++ __rpc_set_netbuf(svc_getrpccaller(xprt), caller->buf, caller->len);
+ xidp = __rpcb_get_dg_xidp(xprt);
+ *xidp = fi->caller_xid;
+ }
Copied: rpcbind/repos/staging-i686/do_not_use_the_xp_auth_pointer_directly.diff (from rev 250152, rpcbind/trunk/do_not_use_the_xp_auth_pointer_directly.diff)
===================================================================
--- staging-i686/do_not_use_the_xp_auth_pointer_directly.diff (rev 0)
+++ staging-i686/do_not_use_the_xp_auth_pointer_directly.diff 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,40 @@
+From 9194122389f2a56b1cd1f935e64307e2e963c2da Mon Sep 17 00:00:00 2001
+From: Steve Dickson <steved at redhat.com>
+Date: Mon, 2 Nov 2015 17:05:18 -0500
+Subject: [PATCH] handle_reply: Don't use the xp_auth pointer directly
+
+In the latest libtirpc version to access the xp_auth
+one must use the SVC_XP_AUTH macro. To be backwards
+compatible a couple ifdefs were added to use the
+macro when it exists.
+
+Signed-off-by: Steve Dickson <steved at redhat.com>
+---
+ src/rpcb_svc_com.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
+index 4ae93f1..22d6c84 100644
+--- a/src/rpcb_svc_com.c
++++ b/src/rpcb_svc_com.c
+@@ -1295,10 +1295,17 @@ handle_reply(int fd, SVCXPRT *xprt)
+ a.rmt_localvers = fi->versnum;
+
+ xprt_set_caller(xprt, fi);
++#if defined(SVC_XP_AUTH)
++ SVC_XP_AUTH(xprt) = svc_auth_none;
++#else
+ xprt->xp_auth = &svc_auth_none;
++#endif
+ svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
++#if !defined(SVC_XP_AUTH)
+ SVCAUTH_DESTROY(xprt->xp_auth);
+ xprt->xp_auth = NULL;
++#endif
++
+ done:
+ if (buffer)
+ free(buffer);
+--
+1.8.2.1
+
Copied: rpcbind/repos/staging-i686/rpcbind-sunrpc.patch (from rev 250152, rpcbind/trunk/rpcbind-sunrpc.patch)
===================================================================
--- staging-i686/rpcbind-sunrpc.patch (rev 0)
+++ staging-i686/rpcbind-sunrpc.patch 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,11 @@
+--- rpcbind-0.2.3/src/rpcbind.c 2015-04-27 16:07:43.000000000 +0200
++++ rpcbind-0.2.3/src/rpcbind.c.new 2015-04-27 19:48:44.518124944 +0200
+@@ -132,7 +132,7 @@
+ char *udp_uaddr; /* Universal UDP address */
+ char *tcp_uaddr; /* Universal TCP address */
+ #endif
+-static char servname[] = "rpcbind";
++static char servname[] = "sunrpc";
+ static char superuser[] = "superuser";
+
+ int main __P((int, char *[]));
Copied: rpcbind/repos/staging-i686/rpcbind.conf (from rev 250152, rpcbind/trunk/rpcbind.conf)
===================================================================
--- staging-i686/rpcbind.conf (rev 0)
+++ staging-i686/rpcbind.conf 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,3 @@
+#
+# Optional arguments passed to rpcbind. See rpcbind(8)
+RPCBIND_ARGS=""
Copied: rpcbind/repos/staging-i686/rpcbind.install (from rev 250152, rpcbind/trunk/rpcbind.install)
===================================================================
--- staging-i686/rpcbind.install (rev 0)
+++ staging-i686/rpcbind.install 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,8 @@
+post_install() {
+ getent group rpc &>/dev/null || groupadd -r -g 32 rpc >/dev/null
+ getent passwd rpc &>/dev/null || useradd -r -u 32 -g rpc -d /dev/null -s /bin/false -c "Rpcbind Daemon" rpc >/dev/null
+}
+
+post_upgrade() {
+ post_install
+}
Copied: rpcbind/repos/staging-i686/rpcbind.service (from rev 250152, rpcbind/trunk/rpcbind.service)
===================================================================
--- staging-i686/rpcbind.service (rev 0)
+++ staging-i686/rpcbind.service 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,11 @@
+[Unit]
+Description=RPC bind service
+Requires=rpcbind.socket
+
+[Service]
+Type=forking
+EnvironmentFile=/etc/conf.d/rpcbind
+ExecStart=/usr/bin/rpcbind -w ${RPCBIND_ARGS}
+
+[Install]
+Also=rpcbind.socket
Copied: rpcbind/repos/staging-i686/rpcbind.socket (from rev 250152, rpcbind/trunk/rpcbind.socket)
===================================================================
--- staging-i686/rpcbind.socket (rev 0)
+++ staging-i686/rpcbind.socket 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,8 @@
+[Unit]
+Description=RPCbind Server Activation Socket
+
+[Socket]
+ListenStream=/var/run/rpcbind.sock
+
+[Install]
+WantedBy=sockets.target
Copied: rpcbind/repos/staging-x86_64/PKGBUILD (from rev 250152, rpcbind/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD (rev 0)
+++ staging-x86_64/PKGBUILD 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,71 @@
+# $Id$
+# Maintainer: AndyRTR <andyrtr at archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa at archlinux.org>
+
+pkgname=rpcbind
+pkgver=0.2.3
+pkgrel=3
+pkgdesc="portmap replacement which supports RPC over various protocols"
+arch=(i686 x86_64)
+backup=('etc/conf.d/rpcbind')
+makedepends=('systemd')
+depends=('bash' 'glibc' 'libtirpc' 'libsystemd')
+url="http://rpcbind.sourceforge.net"
+license=('custom')
+replaces=('portmap')
+# see also http://git.infradead.org/users/steved/rpcbind.git
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
+ bug-940191.patch
+ do_not_use_the_xp_auth_pointer_directly.diff
+ rpcbind-sunrpc.patch
+ rpcbind.service
+ rpcbind.socket
+ rpcbind.conf)
+install=rpcbind.install
+sha1sums=('e79974a99d09b6d6fff9d86bf00225dc33723ce2'
+ '717e2700510b1b40f452eddb929a7be00df4292b'
+ '3fa6138b6a559b5b3a5610686ec1de045a0b8d1d'
+ '1b997ce76f9727efc8c72fc5f97189591c9a60e2'
+ '3534c7bcdecebda90182fe2328a16137353cb1ad'
+ 'c52f8396cd05181b788fbdf74898730343c03c9a'
+ '08246ff18d12cee01e5c9391c6ba8f5597cac936')
+
+prepare() {
+ cd $srcdir/$pkgname-$pkgver
+ # patch for iana services file # FS#20273
+ patch -Np1 -i ../rpcbind-sunrpc.patch
+
+ # fix a memory corruption crash when remote scanning
+ # https://bugs.archlinux.org/task/46341
+ # http://seclists.org/oss-sec/2015/q3/581
+ patch -Np1 -i ../bug-940191.patch
+
+ # upstream fix for libtirpc 1.0.1
+ patch -Np1 -i ../do_not_use_the_xp_auth_pointer_directly.diff
+}
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --with-rpcuser=rpc \
+ --enable-warmstarts \
+ --with-statedir=/var/lib/rpcbind
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ # install rpcbind config file
+ install -D -m644 $srcdir/rpcbind.conf $pkgdir/etc/conf.d/rpcbind
+ # install missing man page - https://bugs.archlinux.org/task/21271
+ install -m644 man/rpcinfo.8 $pkgdir/usr/share/man/man8/
+ # install systemd service file
+ install -D -m644 $srcdir/rpcbind.service $pkgdir/usr/lib/systemd/system/rpcbind.service
+ # install system socket activation
+ install -D -m644 $srcdir/rpcbind.socket $pkgdir/usr/lib/systemd/system/rpcbind.socket
+ # add state directory
+ install -d -m 700 -o 32 -g 32 $pkgdir/var/lib/rpcbind
+ # install license
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/rpcbind/COPYING
+}
Copied: rpcbind/repos/staging-x86_64/bug-940191.patch (from rev 250152, rpcbind/trunk/bug-940191.patch)
===================================================================
--- staging-x86_64/bug-940191.patch (rev 0)
+++ staging-x86_64/bug-940191.patch 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,80 @@
+commit 06f7ebb1dade2f0dbf872ea2bedf17cff4734bdd
+Author: Olaf Kirch <okir () suse de>
+Date: Thu Aug 6 16:27:20 2015 +0200
+
+ Fix memory corruption in PMAP_CALLIT code
+
+ - A PMAP_CALLIT call comes in on IPv4 UDP
+ - rpcbind duplicates the caller's address to a netbuf and stores it in
+ FINFO[0].caller_addr. caller_addr->buf now points to a memory region A
+ with a size of 16 bytes
+ - rpcbind forwards the call to the local service, receives a reply
+ - when processing the reply, it does this in xprt_set_caller:
+ xprt->xp_rtaddr = *FINFO[0].caller_addr
+ It sends out the reply, and then frees the netbuf caller_addr and
+ caller_addr.buf.
+ However, it does not clear xp_rtaddr, so xp_rtaddr.buf now refers
+ to memory region A, which is free.
+ - When the next call comes in on the UDP/IPv4 socket, svc_dg_recv will
+ be called, which will set xp_rtaddr to the client's address.
+ It will reuse the buffer inside xp_rtaddr, ie it will write a
+ sockaddr_in to region A
+
+ Some time down the road, an incoming TCP connection is accepted,
+ allocating a fresh SVCXPRT. The memory region A is inside the
+ new SVCXPRT
+
+ - While processing the TCP call, another UDP call comes in, again
+ overwriting region A with the client's address
+ - TCP client closes connection. In svc_destroy, we now trip over
+ the garbage left in region A
+
+ We ran into the case where a commercial scanner was triggering
+ occasional rpcbind segfaults. The core file that was captured showed
+ a corrupted xprt->xp_netid pointer that was really a sockaddr_in.
+
+ Signed-off-by: Olaf Kirch <okir () suse de>
+
+---
+ src/rpcb_svc_com.c | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+Index: rpcbind-0.1.6+git20080930/src/rpcb_svc_com.c
+===================================================================
+--- rpcbind-0.1.6+git20080930.orig/src/rpcb_svc_com.c
++++ rpcbind-0.1.6+git20080930/src/rpcb_svc_com.c
+@@ -1298,12 +1298,33 @@ check_rmtcalls(struct pollfd *pfds, int
+ return (ncallbacks_found);
+ }
+
++/*
++ * This is really a helper function defined in libtirpc, but unfortunately, it hasn't
++ * been exported yet.
++ */
++static struct netbuf *
++__rpc_set_netbuf(struct netbuf *nb, const void *ptr, size_t len)
++{
++ if (nb->len != len) {
++ if (nb->len)
++ mem_free(nb->buf, nb->len);
++ nb->buf = mem_alloc(len);
++ if (nb->buf == NULL)
++ return NULL;
++
++ nb->maxlen = nb->len = len;
++ }
++ memcpy(nb->buf, ptr, len);
++ return nb;
++}
++
+ static void
+ xprt_set_caller(SVCXPRT *xprt, struct finfo *fi)
+ {
++ const struct netbuf *caller = fi->caller_addr;
+ u_int32_t *xidp;
+
+- *(svc_getrpccaller(xprt)) = *(fi->caller_addr);
++ __rpc_set_netbuf(svc_getrpccaller(xprt), caller->buf, caller->len);
+ xidp = __rpcb_get_dg_xidp(xprt);
+ *xidp = fi->caller_xid;
+ }
Copied: rpcbind/repos/staging-x86_64/do_not_use_the_xp_auth_pointer_directly.diff (from rev 250152, rpcbind/trunk/do_not_use_the_xp_auth_pointer_directly.diff)
===================================================================
--- staging-x86_64/do_not_use_the_xp_auth_pointer_directly.diff (rev 0)
+++ staging-x86_64/do_not_use_the_xp_auth_pointer_directly.diff 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,40 @@
+From 9194122389f2a56b1cd1f935e64307e2e963c2da Mon Sep 17 00:00:00 2001
+From: Steve Dickson <steved at redhat.com>
+Date: Mon, 2 Nov 2015 17:05:18 -0500
+Subject: [PATCH] handle_reply: Don't use the xp_auth pointer directly
+
+In the latest libtirpc version to access the xp_auth
+one must use the SVC_XP_AUTH macro. To be backwards
+compatible a couple ifdefs were added to use the
+macro when it exists.
+
+Signed-off-by: Steve Dickson <steved at redhat.com>
+---
+ src/rpcb_svc_com.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
+index 4ae93f1..22d6c84 100644
+--- a/src/rpcb_svc_com.c
++++ b/src/rpcb_svc_com.c
+@@ -1295,10 +1295,17 @@ handle_reply(int fd, SVCXPRT *xprt)
+ a.rmt_localvers = fi->versnum;
+
+ xprt_set_caller(xprt, fi);
++#if defined(SVC_XP_AUTH)
++ SVC_XP_AUTH(xprt) = svc_auth_none;
++#else
+ xprt->xp_auth = &svc_auth_none;
++#endif
+ svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
++#if !defined(SVC_XP_AUTH)
+ SVCAUTH_DESTROY(xprt->xp_auth);
+ xprt->xp_auth = NULL;
++#endif
++
+ done:
+ if (buffer)
+ free(buffer);
+--
+1.8.2.1
+
Copied: rpcbind/repos/staging-x86_64/rpcbind-sunrpc.patch (from rev 250152, rpcbind/trunk/rpcbind-sunrpc.patch)
===================================================================
--- staging-x86_64/rpcbind-sunrpc.patch (rev 0)
+++ staging-x86_64/rpcbind-sunrpc.patch 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,11 @@
+--- rpcbind-0.2.3/src/rpcbind.c 2015-04-27 16:07:43.000000000 +0200
++++ rpcbind-0.2.3/src/rpcbind.c.new 2015-04-27 19:48:44.518124944 +0200
+@@ -132,7 +132,7 @@
+ char *udp_uaddr; /* Universal UDP address */
+ char *tcp_uaddr; /* Universal TCP address */
+ #endif
+-static char servname[] = "rpcbind";
++static char servname[] = "sunrpc";
+ static char superuser[] = "superuser";
+
+ int main __P((int, char *[]));
Copied: rpcbind/repos/staging-x86_64/rpcbind.conf (from rev 250152, rpcbind/trunk/rpcbind.conf)
===================================================================
--- staging-x86_64/rpcbind.conf (rev 0)
+++ staging-x86_64/rpcbind.conf 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,3 @@
+#
+# Optional arguments passed to rpcbind. See rpcbind(8)
+RPCBIND_ARGS=""
Copied: rpcbind/repos/staging-x86_64/rpcbind.install (from rev 250152, rpcbind/trunk/rpcbind.install)
===================================================================
--- staging-x86_64/rpcbind.install (rev 0)
+++ staging-x86_64/rpcbind.install 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,8 @@
+post_install() {
+ getent group rpc &>/dev/null || groupadd -r -g 32 rpc >/dev/null
+ getent passwd rpc &>/dev/null || useradd -r -u 32 -g rpc -d /dev/null -s /bin/false -c "Rpcbind Daemon" rpc >/dev/null
+}
+
+post_upgrade() {
+ post_install
+}
Copied: rpcbind/repos/staging-x86_64/rpcbind.service (from rev 250152, rpcbind/trunk/rpcbind.service)
===================================================================
--- staging-x86_64/rpcbind.service (rev 0)
+++ staging-x86_64/rpcbind.service 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,11 @@
+[Unit]
+Description=RPC bind service
+Requires=rpcbind.socket
+
+[Service]
+Type=forking
+EnvironmentFile=/etc/conf.d/rpcbind
+ExecStart=/usr/bin/rpcbind -w ${RPCBIND_ARGS}
+
+[Install]
+Also=rpcbind.socket
Copied: rpcbind/repos/staging-x86_64/rpcbind.socket (from rev 250152, rpcbind/trunk/rpcbind.socket)
===================================================================
--- staging-x86_64/rpcbind.socket (rev 0)
+++ staging-x86_64/rpcbind.socket 2015-11-06 18:38:46 UTC (rev 250153)
@@ -0,0 +1,8 @@
+[Unit]
+Description=RPCbind Server Activation Socket
+
+[Socket]
+ListenStream=/var/run/rpcbind.sock
+
+[Install]
+WantedBy=sockets.target
More information about the arch-commits
mailing list