summaryrefslogtreecommitdiff
path: root/common/lib/libc/string/consttime_memequal.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/lib/libc/string/consttime_memequal.c')
-rw-r--r--common/lib/libc/string/consttime_memequal.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/common/lib/libc/string/consttime_memequal.c b/common/lib/libc/string/consttime_memequal.c
new file mode 100644
index 00000000000..969e53295fe
--- /dev/null
+++ b/common/lib/libc/string/consttime_memequal.c
@@ -0,0 +1,19 @@
+/* $NetBSD: consttime_memequal.c,v 1.1 2013/06/24 04:21:19 riastradh Exp $ */
+
+#if !defined(_KERNEL) && !defined(_STANDALONE)
+#include <string.h>
+#define consttime_memequal __consttime_memequal
+#else
+#include <lib/libkern/libkern.h>
+#endif
+
+int
+consttime_memequal(const void *b1, const void *b2, size_t len)
+{
+ const char *c1 = b1, *c2 = b2;
+ int res = 0;
+
+ while (len --)
+ res |= *c1++ ^ *c2++;
+ return res;
+}