aboutsummaryrefslogtreecommitdiff
path: root/security/cryptopp
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2010-01-30 02:56:46 +0000
committerXin LI <delphij@FreeBSD.org>2010-01-30 02:56:46 +0000
commitf606d8f65935ca3c04432a789bcad611b8de182b (patch)
tree9b5603acdfd1d2662da1b1244a7d9bfcd0508e9f /security/cryptopp
parent18409dbbc8942072378aaeb6e4ee2584c333c5f4 (diff)
downloadports-f606d8f65935ca3c04432a789bcad611b8de182b.tar.gz
ports-f606d8f65935ca3c04432a789bcad611b8de182b.zip
Apply a vendor fix to sha256 which prevents cryptopp from generating
correct hash if input is not properly aligned. (r470).
Notes
Notes: svn path=/head/; revision=248828
Diffstat (limited to 'security/cryptopp')
-rw-r--r--security/cryptopp/Makefile1
-rw-r--r--security/cryptopp/files/patch-sha.cpp40
2 files changed, 41 insertions, 0 deletions
diff --git a/security/cryptopp/Makefile b/security/cryptopp/Makefile
index 81de628afda2..09a95ae72a8c 100644
--- a/security/cryptopp/Makefile
+++ b/security/cryptopp/Makefile
@@ -7,6 +7,7 @@
PORTNAME= cryptopp
PORTVERSION= 5.6.0
+PORTREVISION= 1
CATEGORIES= security
MASTER_SITES= SF \
http://www.cryptopp.com/
diff --git a/security/cryptopp/files/patch-sha.cpp b/security/cryptopp/files/patch-sha.cpp
new file mode 100644
index 000000000000..36c2fa930cc7
--- /dev/null
+++ b/security/cryptopp/files/patch-sha.cpp
@@ -0,0 +1,40 @@
+--- ./sha.cpp.orig 2009-03-15 02:48:00.000000000 -0700
++++ ./sha.cpp 2010-01-29 18:49:49.247445242 -0800
+@@ -273,14 +273,15 @@
+ #endif
+ AS2( mov STATE_SAVE, WORD_REG(cx))
+ AS2( mov DATA_SAVE, WORD_REG(dx))
+- AS2( add WORD_REG(di), WORD_REG(dx))
+- AS2( mov DATA_END, WORD_REG(di))
++ AS2( lea WORD_REG(ax), [WORD_REG(di) + WORD_REG(dx)])
++ AS2( mov DATA_END, WORD_REG(ax))
+ AS2( mov K_END, WORD_REG(si))
+
+ #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE
+ #if CRYPTOPP_BOOL_X86
+ AS2( test edi, 1)
+ ASJ( jnz, 2, f)
++ AS1( dec DWORD PTR K_END)
+ #endif
+ AS2( movdqa xmm0, XMMWORD_PTR [WORD_REG(cx)+0*16])
+ AS2( movdqa xmm1, XMMWORD_PTR [WORD_REG(cx)+1*16])
+@@ -355,7 +356,7 @@
+ ROUND(14, 1, eax, ecx, edi, edx)
+ ROUND(15, 1, ecx, eax, edx, edi)
+ AS2( cmp WORD_REG(si), K_END)
+- ASJ( jne, 1, b)
++ ASJ( jl, 1, b)
+
+ AS2( mov WORD_REG(dx), DATA_SAVE)
+ AS2( add WORD_REG(dx), 64)
+@@ -364,8 +365,8 @@
+
+ #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE
+ #if CRYPTOPP_BOOL_X86
+- AS2( test DWORD PTR DATA_END, 1)
+- ASJ( jnz, 4, f)
++ AS2( test DWORD PTR K_END, 1)
++ ASJ( jz, 4, f)
+ #endif
+ AS2( movdqa xmm1, XMMWORD_PTR [AS_REG_7+1*16])
+ AS2( movdqa xmm0, XMMWORD_PTR [AS_REG_7+0*16])