commit:     85a16efd00f98f26f3966aaa273eb9797194bf75
Author:     Alon Bar-Lev <alonbl <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 23 18:08:34 2017 +0000
Commit:     Alon Bar-Lev <alonbl <AT> gentoo <DOT> org>
CommitDate: Sun Jul 23 18:08:58 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=85a16efd

dev-libs/nettle: fix inplace operations

Thanks: Sergei Trofimovich
Bug: 613418

Package-Manager: Portage-2.3.6, Repoman-2.3.1

 dev-libs/nettle/files/nettle-3.3-ecc-add-eh.patch | 32 +++++++++++
 dev-libs/nettle/nettle-3.3-r2.ebuild              | 70 +++++++++++++++++++++++
 2 files changed, 102 insertions(+)

diff --git a/dev-libs/nettle/files/nettle-3.3-ecc-add-eh.patch 
b/dev-libs/nettle/files/nettle-3.3-ecc-add-eh.patch
new file mode 100644
index 00000000000..5492997f336
--- /dev/null
+++ b/dev-libs/nettle/files/nettle-3.3-ecc-add-eh.patch
@@ -0,0 +1,32 @@
+From dcda81d796de2f4a16fd7e9e7a5d07baa288f147 Mon Sep 17 00:00:00 2001
+From: Niels Möller <ni...@lysator.liu.se>
+Date: Tue, 18 Jul 2017 20:52:30 +0200
+Subject: [PATCH] Fix for in-place ecc_add_eh.
+
+* ecc-add-eh.c (ecc_add_eh): Fix in-place operation by reordering
+two multiplies. Previously, in-place operation resulted in an
+invalid call to mpn_mul with overlapping operands. Reported by
+Sergei Trofimovich.
+---
+ ChangeLog    | 7 +++++++
+ ecc-add-eh.c | 4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/ecc-add-eh.c b/ecc-add-eh.c
+index a16be4c..c07ff49 100644
+--- a/ecc-add-eh.c
++++ b/ecc-add-eh.c
+@@ -98,8 +98,8 @@ ecc_add_eh (const struct ecc_curve *ecc,
+   ecc_modp_mul (ecc, x3, B, z1);
+ 
+   /* y3 */
+-  ecc_modp_mul (ecc, B, F, C); /* ! */
+-  ecc_modp_mul (ecc, y3, B, z1);
++  ecc_modp_mul (ecc, B, F, z1); /* ! */
++  ecc_modp_mul (ecc, y3, B, C); /* Clobbers z1 in case r == p. */
+ 
+   /* z3 */
+   ecc_modp_mul (ecc, B, F, G);
+--
+libgit2 0.25.0
+

diff --git a/dev-libs/nettle/nettle-3.3-r2.ebuild 
b/dev-libs/nettle/nettle-3.3-r2.ebuild
new file mode 100644
index 00000000000..6062d1dfd34
--- /dev/null
+++ b/dev-libs/nettle/nettle-3.3-r2.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools multilib-build multilib-minimal multilib toolchain-funcs
+
+DESCRIPTION="Low-level cryptographic library"
+HOMEPAGE="http://www.lysator.liu.se/~nisse/nettle/";
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
+
+LICENSE="|| ( LGPL-3 LGPL-2.1 )"
+SLOT="0/6.1" # subslot = libnettle soname version, .1 as broke ABI bug#601512
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux 
~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris 
~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="doc +gmp neon static-libs test cpu_flags_x86_aes"
+
+DEPEND="gmp? ( >=dev-libs/gmp-5.0:0=[${MULTILIB_USEDEP}] )"
+RDEPEND="${DEPEND}
+       abi_x86_32? (
+               !<=app-emulation/emul-linux-x86-baselibs-20131008-r17
+               !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+       )"
+
+MULTILIB_WRAPPED_HEADERS=(
+       /usr/include/nettle/nettle-stdint.h
+       /usr/include/nettle/version.h
+)
+
+DOCS=()
+HTML_DOCS=()
+
+PATCHES=(
+       "${FILESDIR}/${P}-ecc-add-eh.patch"
+)
+
+pkg_setup() {
+       use doc && DOCS+=(
+               nettle.pdf
+       )
+       use doc && HTML_DOCS+=(
+               nettle.html
+       )
+}
+
+src_prepare() {
+       default
+
+       sed -e '/CFLAGS=/s: -ggdb3::' \
+               -e 's/solaris\*)/sunldsolaris*)/' \
+               -i configure.ac || die
+
+       # conditionally build tests and examples required by tests
+       use test || sed -i '/SUBDIRS/s/testsuite examples//' Makefile.in || die
+
+       eautoreconf
+}
+
+multilib_src_configure() {
+       # --disable-openssl bug #427526
+       ECONF_SOURCE="${S}" econf \
+               --libdir="${EPREFIX}"/usr/$(get_libdir) \
+               --disable-openssl \
+               --disable-fat \
+               $(use_enable gmp public-key) \
+               $(use_enable static-libs static) \
+               $(tc-is-static-only && echo --disable-shared) \
+               $(use_enable doc documentation) \
+               $(use_enable neon arm-neon) \
+               $(use_enable cpu_flags_x86_aes x86-aesni)
+}

Reply via email to