Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC)
- Fix for possible unset uid/gid in toproto
- Fix for default mtree style
- Update libelf
- Importing libexecinfo
- Resynchronize GCC, mpc, gmp, mpfr
- build.sh: Replace params with show-params.
This has been done as the make target has been renamed in the same
way, while a new target named params has been added. This new
target generates a file containing all the parameters, instead of
printing it on the console.
- Update test48 with new etc/services (Fix by Ben Gras <ben@minix3.org)
get getservbyport() out of the inner loop
Change-Id: Ie6ad5226fa2621ff9f0dee8782ea48f9443d2091
This commit is contained in:
32
common/lib/libc/string/consttime_memequal.c
Normal file
32
common/lib/libc/string/consttime_memequal.c
Normal file
@@ -0,0 +1,32 @@
|
||||
/* $NetBSD: consttime_memequal.c,v 1.4 2013/08/28 19:31:14 riastradh Exp $ */
|
||||
|
||||
#if !defined(_KERNEL) && !defined(_STANDALONE)
|
||||
#include "namespace.h"
|
||||
#include <string.h>
|
||||
#ifdef __weak_alias
|
||||
__weak_alias(consttime_memequal,_consttime_memequal)
|
||||
#endif
|
||||
#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++;
|
||||
|
||||
/*
|
||||
* If the compiler for your favourite architecture generates a
|
||||
* conditional branch for `!res', it will be a data-dependent
|
||||
* branch, in which case this should be replaced by
|
||||
*
|
||||
* return (1 - (1 & ((res - 1) >> 8)));
|
||||
*
|
||||
* or rewritten in assembly.
|
||||
*/
|
||||
return !res;
|
||||
}
|
||||
Reference in New Issue
Block a user