diff options
author | Martin Willi <martin@strongswan.org> | 2008-11-26 10:06:59 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2008-11-26 10:06:59 +0000 |
commit | 4fd233a73e81b4d7ecd8d8e786b2a14e51f048a0 (patch) | |
tree | 17565256e7c5c7078876fe431a965b4db2a16428 /src | |
parent | 69e9698b17261fed97c2bc22100e338ae7736bc7 (diff) | |
download | strongswan-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.c | 12 |
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++; } } |