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.
For an explanation of the terms used in this section, see
|Interface | Attribute | Value |
|memcmp() | Thread safety | MT-Safe |
POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
Do not use memcmp() to compare security critical data, such as crypto-
graphic 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 speci-
fied in POSIX. On Linux, it may be necessary to implement such a func-
bcmp(3), strcasecmp(3), strcmp(3), strcoll(3), strncasecmp(3),
This page is part of release 4.04 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
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2019
All Rights Reserved.