Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src



   Date: Thu, 30 Aug 2012 11:44:41 -0400
   From: christos%zoulas.com@localhost (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?


Home | Main Index | Thread Index | Old Index