diff options
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++; } } |