'\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sat Jul 24 18:55:27 1993 by Rik Faith (faith@cs.unc.edu) .TH memcmp 3 2023-03-30 "Linux man-pages 6.04" .SH NAME memcmp \- compare memory areas .SH LIBRARY Standard C library .RI ( libc ", " \-lc ) .SH SYNOPSIS .nf .B #include .PP .BI "int memcmp(const void " s1 [. n "], const void " s2 [. n "], size_t " n ); .fi .SH DESCRIPTION The .BR memcmp () function compares the first \fIn\fP bytes (each interpreted as .IR "unsigned char" ) of the memory areas \fIs1\fP and \fIs2\fP. .SH RETURN VALUE The .BR memcmp () function returns an integer less than, equal to, or greater than zero if the first \fIn\fP bytes of \fIs1\fP is found, respectively, to be less than, to match, or be greater than the first \fIn\fP bytes of \fIs2\fP. .PP For a nonzero return value, the sign is determined by the sign of the difference between the first pair of bytes (interpreted as .IR "unsigned char" ) that differ in .I s1 and .IR s2 . .PP If .I n is zero, the return value is zero. .SH ATTRIBUTES For an explanation of the terms used in this section, see .BR attributes (7). .ad l .nh .TS allbox; lbx lb lb l l l. Interface Attribute Value T{ .BR memcmp () T} Thread safety MT-Safe .TE .hy .ad .sp 1 .SH STANDARDS C11, POSIX.1-2008. .SH HISTORY POSIX.1-2001, C89, SVr4, 4.3BSD. .SH CAVEATS Do not use .BR 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 .BR consttime_memequal ()), but no such function is specified in POSIX. On Linux, you may need to implement such a function yourself. .SH SEE ALSO .BR bstring (3), .BR strcasecmp (3), .BR strcmp (3), .BR strcoll (3), .BR strncasecmp (3), .BR strncmp (3), .BR wmemcmp (3)