[arch-commits] Commit in rpcbind/repos (16 files)
Andreas Radke
andyrtr at archlinux.org
Sat Sep 19 16:59:00 UTC 2015
Date: Saturday, September 19, 2015 @ 18:59:00
Author: andyrtr
Revision: 246666
archrelease: copy trunk to testing-i686, testing-x86_64
Added:
rpcbind/repos/testing-i686/
rpcbind/repos/testing-i686/PKGBUILD
(from rev 246665, rpcbind/trunk/PKGBUILD)
rpcbind/repos/testing-i686/bug-940191.patch
(from rev 246665, rpcbind/trunk/bug-940191.patch)
rpcbind/repos/testing-i686/rpcbind-sunrpc.patch
(from rev 246665, rpcbind/trunk/rpcbind-sunrpc.patch)
rpcbind/repos/testing-i686/rpcbind.conf
(from rev 246665, rpcbind/trunk/rpcbind.conf)
rpcbind/repos/testing-i686/rpcbind.install
(from rev 246665, rpcbind/trunk/rpcbind.install)
rpcbind/repos/testing-i686/rpcbind.service
(from rev 246665, rpcbind/trunk/rpcbind.service)
rpcbind/repos/testing-i686/rpcbind.socket
(from rev 246665, rpcbind/trunk/rpcbind.socket)
rpcbind/repos/testing-x86_64/
rpcbind/repos/testing-x86_64/PKGBUILD
(from rev 246665, rpcbind/trunk/PKGBUILD)
rpcbind/repos/testing-x86_64/bug-940191.patch
(from rev 246665, rpcbind/trunk/bug-940191.patch)
rpcbind/repos/testing-x86_64/rpcbind-sunrpc.patch
(from rev 246665, rpcbind/trunk/rpcbind-sunrpc.patch)
rpcbind/repos/testing-x86_64/rpcbind.conf
(from rev 246665, rpcbind/trunk/rpcbind.conf)
rpcbind/repos/testing-x86_64/rpcbind.install
(from rev 246665, rpcbind/trunk/rpcbind.install)
rpcbind/repos/testing-x86_64/rpcbind.service
(from rev 246665, rpcbind/trunk/rpcbind.service)
rpcbind/repos/testing-x86_64/rpcbind.socket
(from rev 246665, rpcbind/trunk/rpcbind.socket)
-------------------------------------+
testing-i686/PKGBUILD | 66 ++++++++++++++++++++++++++++
testing-i686/bug-940191.patch | 80 ++++++++++++++++++++++++++++++++++
testing-i686/rpcbind-sunrpc.patch | 11 ++++
testing-i686/rpcbind.conf | 3 +
testing-i686/rpcbind.install | 8 +++
testing-i686/rpcbind.service | 11 ++++
testing-i686/rpcbind.socket | 8 +++
testing-x86_64/PKGBUILD | 66 ++++++++++++++++++++++++++++
testing-x86_64/bug-940191.patch | 80 ++++++++++++++++++++++++++++++++++
testing-x86_64/rpcbind-sunrpc.patch | 11 ++++
testing-x86_64/rpcbind.conf | 3 +
testing-x86_64/rpcbind.install | 8 +++
testing-x86_64/rpcbind.service | 11 ++++
testing-x86_64/rpcbind.socket | 8 +++
14 files changed, 374 insertions(+)
Copied: rpcbind/repos/testing-i686/PKGBUILD (from rev 246665, rpcbind/trunk/PKGBUILD)
===================================================================
--- testing-i686/PKGBUILD (rev 0)
+++ testing-i686/PKGBUILD 2015-09-19 16:59:00 UTC (rev 246666)
@@ -0,0 +1,66 @@
+# $Id$
+# Maintainer: AndyRTR <andyrtr at archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa at archlinux.org>
+
+pkgname=rpcbind
+pkgver=0.2.3
+pkgrel=2
+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
+ rpcbind-sunrpc.patch
+ rpcbind.service
+ rpcbind.socket
+ rpcbind.conf)
+install=rpcbind.install
+sha1sums=('e79974a99d09b6d6fff9d86bf00225dc33723ce2'
+ '717e2700510b1b40f452eddb929a7be00df4292b'
+ '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
+}
+
+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/testing-i686/bug-940191.patch (from rev 246665, rpcbind/trunk/bug-940191.patch)
===================================================================
--- testing-i686/bug-940191.patch (rev 0)
+++ testing-i686/bug-940191.patch 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-i686/rpcbind-sunrpc.patch (from rev 246665, rpcbind/trunk/rpcbind-sunrpc.patch)
===================================================================
--- testing-i686/rpcbind-sunrpc.patch (rev 0)
+++ testing-i686/rpcbind-sunrpc.patch 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-i686/rpcbind.conf (from rev 246665, rpcbind/trunk/rpcbind.conf)
===================================================================
--- testing-i686/rpcbind.conf (rev 0)
+++ testing-i686/rpcbind.conf 2015-09-19 16:59:00 UTC (rev 246666)
@@ -0,0 +1,3 @@
+#
+# Optional arguments passed to rpcbind. See rpcbind(8)
+RPCBIND_ARGS=""
Copied: rpcbind/repos/testing-i686/rpcbind.install (from rev 246665, rpcbind/trunk/rpcbind.install)
===================================================================
--- testing-i686/rpcbind.install (rev 0)
+++ testing-i686/rpcbind.install 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-i686/rpcbind.service (from rev 246665, rpcbind/trunk/rpcbind.service)
===================================================================
--- testing-i686/rpcbind.service (rev 0)
+++ testing-i686/rpcbind.service 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-i686/rpcbind.socket (from rev 246665, rpcbind/trunk/rpcbind.socket)
===================================================================
--- testing-i686/rpcbind.socket (rev 0)
+++ testing-i686/rpcbind.socket 2015-09-19 16:59:00 UTC (rev 246666)
@@ -0,0 +1,8 @@
+[Unit]
+Description=RPCbind Server Activation Socket
+
+[Socket]
+ListenStream=/var/run/rpcbind.sock
+
+[Install]
+WantedBy=sockets.target
Copied: rpcbind/repos/testing-x86_64/PKGBUILD (from rev 246665, rpcbind/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD (rev 0)
+++ testing-x86_64/PKGBUILD 2015-09-19 16:59:00 UTC (rev 246666)
@@ -0,0 +1,66 @@
+# $Id$
+# Maintainer: AndyRTR <andyrtr at archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa at archlinux.org>
+
+pkgname=rpcbind
+pkgver=0.2.3
+pkgrel=2
+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
+ rpcbind-sunrpc.patch
+ rpcbind.service
+ rpcbind.socket
+ rpcbind.conf)
+install=rpcbind.install
+sha1sums=('e79974a99d09b6d6fff9d86bf00225dc33723ce2'
+ '717e2700510b1b40f452eddb929a7be00df4292b'
+ '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
+}
+
+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/testing-x86_64/bug-940191.patch (from rev 246665, rpcbind/trunk/bug-940191.patch)
===================================================================
--- testing-x86_64/bug-940191.patch (rev 0)
+++ testing-x86_64/bug-940191.patch 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-x86_64/rpcbind-sunrpc.patch (from rev 246665, rpcbind/trunk/rpcbind-sunrpc.patch)
===================================================================
--- testing-x86_64/rpcbind-sunrpc.patch (rev 0)
+++ testing-x86_64/rpcbind-sunrpc.patch 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-x86_64/rpcbind.conf (from rev 246665, rpcbind/trunk/rpcbind.conf)
===================================================================
--- testing-x86_64/rpcbind.conf (rev 0)
+++ testing-x86_64/rpcbind.conf 2015-09-19 16:59:00 UTC (rev 246666)
@@ -0,0 +1,3 @@
+#
+# Optional arguments passed to rpcbind. See rpcbind(8)
+RPCBIND_ARGS=""
Copied: rpcbind/repos/testing-x86_64/rpcbind.install (from rev 246665, rpcbind/trunk/rpcbind.install)
===================================================================
--- testing-x86_64/rpcbind.install (rev 0)
+++ testing-x86_64/rpcbind.install 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-x86_64/rpcbind.service (from rev 246665, rpcbind/trunk/rpcbind.service)
===================================================================
--- testing-x86_64/rpcbind.service (rev 0)
+++ testing-x86_64/rpcbind.service 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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/testing-x86_64/rpcbind.socket (from rev 246665, rpcbind/trunk/rpcbind.socket)
===================================================================
--- testing-x86_64/rpcbind.socket (rev 0)
+++ testing-x86_64/rpcbind.socket 2015-09-19 16:59:00 UTC (rev 246666)
@@ -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