aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
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++;
}
}