Date: Thu, 30 Aug 2012 11:44:41 -0400
   From: chris...@zoulas.com (Christos Zoulas)

   memcmp() does not promise alphabetical sorting. It just promises to do the
   byte comparison as unsigned so that the results are consistent. It is not
   complicated to do this at all, for example:

   int
   consttime_memcmp(const void *s1, const void *s2, size_t n)
   {
           int rv = 0, sv = 0;
           const unsigned char *p1 = s1, *p2 = s2;

           do
                   if (rv == 0)
                           rv = *p1++ - *p2++;

Data-dependent branches are totally unacceptable for a routine whose
sole purpose is to avoid timing side channels.

Are there any applications that both want memcmp semantics and need to
avoid timing side channels?

Reply via email to