aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2008-11-26 10:06:59 +0000
committerMartin Willi <martin@strongswan.org>2008-11-26 10:06:59 +0000
commit4fd233a73e81b4d7ecd8d8e786b2a14e51f048a0 (patch)
tree17565256e7c5c7078876fe431a965b4db2a16428 /src
parent69e9698b17261fed97c2bc22100e338ae7736bc7 (diff)
downloadstrongswan-4fd233a73e81b4d7ecd8d8e786b2a14e51f048a0.tar.bz2
strongswan-4fd233a73e81b4d7ecd8d8e786b2a14e51f048a0.tar.xz
memxor() tweaks, as it is heavily used in xcbc
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/utils.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/libstrongswan/utils.c b/src/libstrongswan/utils.c
index 88aa1bf79..3a6a478ff 100644
--- a/src/libstrongswan/utils.c
+++ b/src/libstrongswan/utils.c
@@ -61,10 +61,18 @@ void *clalloc(void * pointer, size_t size)
*/
void memxor(u_int8_t dest[], u_int8_t src[], size_t n)
{
- size_t i;
- for (i = 0; i < n; i++)
+ int i = 0, m;
+
+ m = n - sizeof(long);
+ while (i < m)
+ {
+ *(long*)(dest + i) ^= *(long*)(src + i);
+ i += sizeof(long);
+ }
+ while (i < n)
{
dest[i] ^= src[i];
+ i++;
}
}