Date: Wed, 22 May 2013 22:41:42 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r318802 - in head/security/cryptopp: . files Message-ID: <201305222241.r4MMfg7x001140@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: delphij Date: Wed May 22 22:41:42 2013 New Revision: 318802 URL: http://svnweb.freebsd.org/changeset/ports/318802 Log: This changeset fixes two issues with crypto++ library: * patch-misc.h This fixes a warning triggered by testing an unsigned parameter against 0. The patch solves this by creating a different template for signed case. * patch-nbtheory.cpp This is a workaround for a bug with the current version of libc++ shipped with FreeBSD 9.x, which causes an infinite loop when generating RSA key, possibly also other operations. PR: ports/178827 Submitted by: Michael Gmelin <freebsd grem de> Added: head/security/cryptopp/files/patch-misc.h (contents, props changed) head/security/cryptopp/files/patch-nbtheory.cpp (contents, props changed) Modified: head/security/cryptopp/Makefile Modified: head/security/cryptopp/Makefile ============================================================================== --- head/security/cryptopp/Makefile Wed May 22 22:21:52 2013 (r318801) +++ head/security/cryptopp/Makefile Wed May 22 22:41:42 2013 (r318802) @@ -3,7 +3,7 @@ PORTNAME= cryptopp PORTVERSION= 5.6.1 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= security MASTER_SITES= SF \ http://www.cryptopp.com/ Added: head/security/cryptopp/files/patch-misc.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/security/cryptopp/files/patch-misc.h Wed May 22 22:41:42 2013 (r318802) @@ -0,0 +1,54 @@ +--- misc.h.orig 2010-08-06 18:46:18.000000000 +0000 ++++ misc.h 2013-05-22 08:43:01.949194748 +0000 +@@ -405,17 +405,13 @@ + return order == GetNativeByteOrder(); + } + ++template<bool> struct IsUnsigned {}; ++ + template <class T> +-std::string IntToString(T a, unsigned int base = 10) ++std::string IntToStringImpl(T a, unsigned int base, IsUnsigned<true>) + { + if (a == 0) + return "0"; +- bool negate = false; +- if (a < 0) +- { +- negate = true; +- a = 0-a; // VC .NET does not like -a +- } + std::string result; + while (a > 0) + { +@@ -423,11 +419,30 @@ + result = char((digit < 10 ? '0' : ('a' - 10)) + digit) + result; + a /= base; + } ++ return result; ++} ++ ++template <class T> ++std::string IntToStringImpl(T a, unsigned int base, IsUnsigned<false>) ++{ ++ bool negate = false; ++ if (a < 0) ++ { ++ negate = true; ++ a = 0-a; // VC .NET does not like -a ++ } ++ std::string result = IntToStringImpl(a, base, IsUnsigned<true>()); + if (negate) + result = "-" + result; + return result; + } + ++template <class T> ++std::string IntToString(T a, unsigned int base = 10) ++{ ++ return IntToStringImpl(a, base, IsUnsigned<(static_cast<T>(-1) > 0)>()); ++} ++ + template <class T1, class T2> + inline T1 SaturatingSubtract(const T1 &a, const T2 &b) + { Added: head/security/cryptopp/files/patch-nbtheory.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/security/cryptopp/files/patch-nbtheory.cpp Wed May 22 22:41:42 2013 (r318802) @@ -0,0 +1,21 @@ +--- nbtheory.cpp.orig 2013-05-22 00:16:26.761193859 +0000 ++++ nbtheory.cpp 2013-05-22 00:15:29.401256454 +0000 +@@ -307,7 +307,18 @@ + + bool PrimeSieve::NextCandidate(Integer &c) + { ++#if defined(__clang__) && defined(_LIBCPP_VERSION) && _LIBCPP_VERSION < 1101 ++ // Workaround for a bug in libc++ in std::find on std::vector<bool> ++ std::vector<bool>::iterator pos = m_sieve.begin()+m_next; ++ for (std::vector<bool>::iterator end = m_sieve.end(); pos != end; ++pos) ++ { ++ if (*pos == false) ++ break; ++ } ++ bool safe = SafeConvert(pos - m_sieve.begin(), m_next); ++#else + bool safe = SafeConvert(std::find(m_sieve.begin()+m_next, m_sieve.end(), false) - m_sieve.begin(), m_next); ++#endif + assert(safe); + if (m_next == m_sieve.size()) + {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305222241.r4MMfg7x001140>