diff options
-rw-r--r-- | .SRCINFO | 25 | ||||
-rw-r--r-- | PKGBUILD | 51 | ||||
-rw-r--r-- | openslp-2.0.0-null-pointer-deref.patch | 12 | ||||
-rw-r--r-- | openslp-2.0.0-openssl-1.1-fix.patch | 25 | ||||
-rw-r--r-- | openslp.service | 11 |
5 files changed, 124 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..bdc7aa6aeb11 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,25 @@ +pkgbase = openslp + pkgdesc = Open-source implementation of Service Location Protocol + pkgver = 2.0.0 + pkgrel = 2 + url = http://www.openslp.org + arch = x86_64 + license = BSD + makedepends = doxygen + depends = bash + depends = openssl + options = !makeflags + backup = etc/slp.conf + backup = etc/slp.reg + backup = etc/slp.spi + source = https://downloads.sourceforge.net/sourceforge/openslp/openslp-2.0.0.tar.gz + source = openslp.service + source = openslp-2.0.0-null-pointer-deref.patch + source = openslp-2.0.0-openssl-1.1-fix.patch + sha256sums = 924337a2a8e5be043ebaea2a78365c7427ac6e9cee24610a0780808b2ba7579b + sha256sums = 8bba465806891a5df4702ab25866bd43258a6b0370b6e0941d188568ef82bdb9 + sha256sums = da639ca50ea3e7eeb747505171bc7678a444b6755a7068b0cd294cc87f1ebdbe + sha256sums = bf38f7a251ff41582c17451af185a964d1ed235d0f2ff294e1d2761da17ab078 + +pkgname = openslp + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..7b7aff08aca4 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,51 @@ +# $Id$ +# Maintainer: Tobias Powalowski <tpowa@archlinux.org> + +pkgname=openslp +pkgver=2.0.0 +pkgrel=2 +pkgdesc="Open-source implementation of Service Location Protocol" +arch=('x86_64') +url="http://www.openslp.org" +license=('BSD') +depends=('bash' 'openssl') +makedepends=('doxygen') +backup=('etc/slp.conf' 'etc/slp.reg' 'etc/slp.spi') +options=(!makeflags) +source=(https://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz + openslp.service + openslp-2.0.0-null-pointer-deref.patch + openslp-2.0.0-openssl-1.1-fix.patch) +sha256sums=('924337a2a8e5be043ebaea2a78365c7427ac6e9cee24610a0780808b2ba7579b' + '8bba465806891a5df4702ab25866bd43258a6b0370b6e0941d188568ef82bdb9' + 'da639ca50ea3e7eeb747505171bc7678a444b6755a7068b0cd294cc87f1ebdbe' + 'bf38f7a251ff41582c17451af185a964d1ed235d0f2ff294e1d2761da17ab078') + +prepare() { + cd $pkgname-$pkgver + sed -i 's|$(datadir)/doc|$(docdir)|' doc/Makefile.in + patch -Np1 -i ../openslp-2.0.0-null-pointer-deref.patch + patch -Np1 -i ../openslp-2.0.0-openssl-1.1-fix.patch +} + +build() { + cd ${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --sbindir=/usr/bin \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --docdir=/usr/share/doc/openslp-${pkgver} \ + --enable-slpv1 \ + --enable-slpv2-security # service would fail to start without this + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make +} + +package() { + cd ${pkgname}-${pkgver} + make DESTDIR="${pkgdir}" install + make DESTDIR="${pkgdir}" INSTALL_DATA="cp -r" install-docs + rm "${pkgdir}/usr/share/doc/openslp-${pkgver}/openslp-doxy-${pkgver}.tar.gz" + install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m644 "${srcdir}/openslp.service" "${pkgdir}/usr/lib/systemd/system/openslp.service" +} diff --git a/openslp-2.0.0-null-pointer-deref.patch b/openslp-2.0.0-null-pointer-deref.patch new file mode 100644 index 000000000000..3c07d6efb42a --- /dev/null +++ b/openslp-2.0.0-null-pointer-deref.patch @@ -0,0 +1,12 @@ +diff -up openslp-2.0.0/common/slp_xmalloc.c.orig openslp-2.0.0/common/slp_xmalloc.c +--- openslp-2.0.0/common/slp_xmalloc.c.orig 2012-12-07 01:52:08.000000000 +0100 ++++ openslp-2.0.0/common/slp_xmalloc.c 2016-05-23 12:58:57.953532979 +0200 +@@ -203,6 +203,8 @@ void * _xrealloc(const char * file, int + if (x->size != size) + { + newptr = _xmalloc(file, line, size); ++ if (newptr == 0) ++ return 0; + memcpy(newptr, ptr, x->size); + _xfree(file, line, x); + } diff --git a/openslp-2.0.0-openssl-1.1-fix.patch b/openslp-2.0.0-openssl-1.1-fix.patch new file mode 100644 index 000000000000..78dc6c5de796 --- /dev/null +++ b/openslp-2.0.0-openssl-1.1-fix.patch @@ -0,0 +1,25 @@ +diff -up openslp-2.0.0/common/slp_crypto.c.orig openslp-2.0.0/common/slp_crypto.c +--- openslp-2.0.0/common/slp_crypto.c.orig 2012-12-07 21:13:28.000000000 +0100 ++++ openslp-2.0.0/common/slp_crypto.c 2017-02-22 11:16:11.620835724 +0100 +@@ -88,11 +88,16 @@ SLPCryptoDSAKey * SLPCryptoDSAKeyDup(SLP + result = DSA_new(); + if (result) + { +- result->p = BN_dup(dsa->p); +- result->q = BN_dup(dsa->q); +- result->g = BN_dup(dsa->g); +- result->priv_key = BN_dup(dsa->priv_key); +- result->pub_key = BN_dup(dsa->pub_key); ++ const BIGNUM *p, *q, *g; ++ const BIGNUM *priv_key, *pub_key; ++ ++ DSA_get0_pqg(dsa, &p, &q, &g); ++ DSA_get0_key(dsa, &pub_key, &priv_key); ++ ++ /* would be nice to check return values, ++ * but original code didn't do that either... */ ++ DSA_set0_pqg(result, BN_dup(p), BN_dup(q), BN_dup(g)); ++ DSA_set0_key(result, BN_dup(pub_key), BN_dup(priv_key)); + } + return result; + } diff --git a/openslp.service b/openslp.service new file mode 100644 index 000000000000..a3c306aa281d --- /dev/null +++ b/openslp.service @@ -0,0 +1,11 @@ +[Unit] +Description=Service Location Protocol +After=network.target + +[Service] +Type=forking +ExecStart=/usr/bin/slpd -c /etc/slp.conf -r /etc/slp.reg -s /etc/slp.spi +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=network.target |