commit:     d43064759d03da59c88bbb015306c870a917de40
Author:     Michel Ganguin <michel <AT> ganguin <DOT> net>
AuthorDate: Thu Jun 21 12:18:02 2018 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Thu Jun 21 14:04:35 2018 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=d4306475

net-libs/libasr: musl support requires alternate random function

libasr linkage error on musl because of missing res_randomid().
* Apply Alpine patch to replace res_randomid() by arc4random().
* On gentoo arc4random() is provided by dev-libs/libbsd and requires the
  -lbsd link flag. (in recent versions of libbsd arc4random has nothing to
  do with weak RC4 anymore, see man-page for details)

 net-libs/libasr/Manifest                           |  1 +
 ...sing-res_randomid-with-the-more-secure-ar.patch | 66 ++++++++++++++++++++++
 net-libs/libasr/libasr-1.0.2.ebuild                | 25 ++++++++
 net-libs/libasr/metadata.xml                       | 11 ++++
 4 files changed, 103 insertions(+)

diff --git a/net-libs/libasr/Manifest b/net-libs/libasr/Manifest
new file mode 100644
index 0000000..5df96c3
--- /dev/null
+++ b/net-libs/libasr/Manifest
@@ -0,0 +1 @@
+DIST libasr-1.0.2.tar.gz 406428 BLAKE2B 
527ad44cc4202dd195d6376cfa25b5d8946f24df9c64b91b3468ee961b6d3228f8a3d38c94299e630df7088ae0bf7b16bdb560521124f2a3ee77edb2e67539d0
 SHA512 
a4825a30130f70a452044c484871ac37459e1c1e6659c4c38dead7d3abbdaecb3517b7accb46586537975fee033857566fd279ecf97ae87dc80bb6bcdd467d3e

diff --git 
a/net-libs/libasr/files/0002-Replace-missing-res_randomid-with-the-more-secure-ar.patch
 
b/net-libs/libasr/files/0002-Replace-missing-res_randomid-with-the-more-secure-ar.patch
new file mode 100644
index 0000000..7383976
--- /dev/null
+++ 
b/net-libs/libasr/files/0002-Replace-missing-res_randomid-with-the-more-secure-ar.patch
@@ -0,0 +1,66 @@
+From fb2c3b37d1022d84506ca0815c7c888c4f08e90c Mon Sep 17 00:00:00 2001
+From: xentec <xen...@aix0.eu>
+Date: Sat, 11 Feb 2017 14:39:24 +0000
+Subject: [PATCH 2/3] Replace missing res_randomid() with the more secure
+ arc4random()
+
+---
+ configure.ac                    | 2 ++
+ openbsd-compat/openbsd-compat.h | 2 ++
+ src/res_mkquery.c               | 2 +-
+ src/res_send_async.c            | 2 +-
+ 4 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 10aff04..fa0e896 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -264,6 +264,8 @@ AC_ARG_WITH([Werror],
+ )
+ #l325
+ 
++LIBS="-lcrypto -lbsd $LIBS"
++
+ AC_CHECK_HEADERS([ \
+       crypt.h \
+       dirent.h \
+diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
+index c30591c..9be2e0b 100644
+--- a/openbsd-compat/openbsd-compat.h
++++ b/openbsd-compat/openbsd-compat.h
+@@ -123,4 +123,6 @@ int res_hnok(const char *);
+ int clock_gettime(int, struct timespec *);
+ #endif
+ 
++unsigned int arc4random(void);
++
+ #endif /* _OPENBSD_COMPAT_H */
+diff --git a/src/res_mkquery.c b/src/res_mkquery.c
+index 27ed21e..cce4029 100644
+--- a/src/res_mkquery.c
++++ b/src/res_mkquery.c
+@@ -57,7 +57,7 @@ res_mkquery(int op, const char *dname, int class, int type,
+       ac = asr_use_resolver(NULL);
+ 
+       memset(&h, 0, sizeof h);
+-      h.id = res_randomid();
++      h.id = arc4random();
+       if (ac->ac_options & RES_RECURSE)
+               h.flags |= RD_MASK;
+       h.qdcount = 1;
+diff --git a/src/res_send_async.c b/src/res_send_async.c
+index a60aa0d..a0f4704 100644
+--- a/src/res_send_async.c
++++ b/src/res_send_async.c
+@@ -380,7 +380,7 @@ setup_query(struct asr_query *as, const char *name, const 
char *dom,
+       as->as.dns.obuflen = 0;
+ 
+       memset(&h, 0, sizeof h);
+-      h.id = res_randomid();
++      h.id = arc4random();
+       if (as->as_ctx->ac_options & RES_RECURSE)
+               h.flags |= RD_MASK;
+       h.qdcount = 1;
+-- 
+2.11.1
+

diff --git a/net-libs/libasr/libasr-1.0.2.ebuild 
b/net-libs/libasr/libasr-1.0.2.ebuild
new file mode 100644
index 0000000..d4d513c
--- /dev/null
+++ b/net-libs/libasr/libasr-1.0.2.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils autotools
+
+DESCRIPTION="Async Resolver Library from OpenBSD/OpenSMTPD"
+HOMEPAGE="https://github.com/OpenSMTPD/libasr";
+SRC_URI="https://www.opensmtpd.org/archives/${P}.tar.gz";
+
+LICENSE="ISC BSD BSD-1 BSD-2 BSD-4"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE=""
+
+DEPEND="dev-libs/libbsd"
+RDEPEND="${DEPEND}"
+
+src_prepare(){
+    # Patch from 
https://git.alpinelinux.org/cgit/aports/plain/main/libasr/0002-Replace-missing-res_randomid-with-the-more-secure-ar.patch,
 changed LIBS to incluse -lbsd
+       epatch 
"${FILESDIR}/0002-Replace-missing-res_randomid-with-the-more-secure-ar.patch"
+       default
+       eautoreconf
+}

diff --git a/net-libs/libasr/metadata.xml b/net-libs/libasr/metadata.xml
new file mode 100644
index 0000000..f301cb0
--- /dev/null
+++ b/net-libs/libasr/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>zx...@gentoo.org</email>
+               <name>Jason A. Donenfeld</name>
+       </maintainer>
+       <upstream>
+               <remote-id type="github">OpenSMTPD/libasr</remote-id>
+       </upstream>
+</pkgmetadata>

Reply via email to