MEMCMP(3) manual page
Table of Contents
memcmp - compare memory areas
#include <string.h>
int memcmp(const void *s1, const void *s2, size_t n);
The memcmp()
function compares the first n bytes (each interpreted as unsigned char)
of the memory areas s1 and s2.
The memcmp() function returns
an integer less than, equal to, or greater than zero if the first n bytes
of s1 is found, respectively, to be less than, to match, or be greater
than the first n bytes of s2.
For a nonzero return value, the sign is determined
by the sign of the difference between the first pair of bytes (interpreted
as unsigned char) that differ in s1 and s2.
If n is zero, the return value
is zero.
The memcmp() function
is thread-safe.
SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
Do not
use memcmp() to compare security critical data, such as cryptographic secrets,
because the required CPU time depends on the number of equal bytes. Instead,
a function that performs comparisons in constant time is required. Some
operating systems provide such a function (e.g., NetBSD’s consttime_memequal()),
but no such function is specified in POSIX. On Linux, it may be necessary
to implement such a function oneself.
bcmp(3)
, strcasecmp(3)
, strcmp(3)
,
strcoll(3)
, strncasecmp(3)
, strncmp(3)
, wmemcmp(3)
This page is
part of release 3.78 of the Linux man-pages project. A description of the
project, information about reporting bugs, and the latest version of this
page, can be found at http://www.kernel.org/doc/man-pages/.
Table of Contents