DOKK / manpages / debian 12 / manpages-dev / memcmp.3.en
memcmp(3) Library Functions Manual memcmp(3)

memcmp - compare memory areas

Standard C library (libc, -lc)

#include <string.h>
int memcmp(const void s1[.n], const void s2[.n], 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 attributes(7).

Interface Attribute Value
memcmp () Thread safety MT-Safe

POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

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.

bstring(3), strcasecmp(3), strcmp(3), strcoll(3), strncasecmp(3), strncmp(3), wmemcmp(3)

2023-01-07 Linux man-pages 6.03