Johannes Schindelin <Johannes.Schindelin@xxxxxx> wrote: > Sorry, I was unclear. Of course, memcmp() does not stop on NUL. But it > stops when that NUL is different from what the other pointer has. Which is > the case here. Does it really? My copy of the spec doesn't say that. It says only this: : 7.21.4.1 The memcmp function : : Synopsis : : #include <string.h> : int memcmp(const void *s1, const void *s2, size_t n); : : Description : : The memcmp() function compares the first n characters of the object : pointed to by s1 to the first n characters of the object pointed to by : s2.262) : : Returns : : The memcmp function returns an integer greater than, equal to, or less : than zero, accordingly as the object pointed to by s1 is greater than, : equal to, or less than the object pointed to by s2. : : 262) The contents of ``holes'' used as padding for purposes of : alignment within structure objects are indeterminate. Strings shorter : than their allocated space and unions may also cause problems in : comparison. There are reasons for which it'd be desirable that memcmp really compare all the bytes, even if it can in theory stop early: in particular, there are cases where early exit can leak timing information which makes it possible to attack cryptographic protocols. I'd have to recommend strncmp for this job. -- [mdw] - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html