GH102: Add volatile to CRYPTO_memcmp
authorRich Salz <rsalz@akamai.com>
Fri, 29 Jan 2016 17:09:05 +0000 (12:09 -0500)
committerRich Salz <rsalz@openssl.org>
Sat, 30 Jan 2016 19:41:23 +0000 (14:41 -0500)
Can't hurt and seems to prevent problems from some over-aggressive
(LTO?) compilers.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(cherry picked from commit 98ab57644f44d2d83595c2d0f69138a284d6096b)

crypto/cryptlib.c
crypto/crypto.h

index c9f674ba8e62497415431e7d5fe60cf14c6bce23..1925428f5ec5324a01a10e12fbeac9f5e4f238a5 100644 (file)
@@ -1016,11 +1016,11 @@ void *OPENSSL_stderr(void)
     return stderr;
 }
 
-int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len)
+int CRYPTO_memcmp(const volatile void *in_a, const volatile void *in_b, size_t len)
 {
     size_t i;
-    const unsigned char *a = in_a;
-    const unsigned char *b = in_b;
+    const volatile unsigned char *a = in_a;
+    const volatile unsigned char *b = in_b;
     unsigned char x = 0;
 
     for (i = 0; i < len; i++)
index c450d7a3c374b3aaf58e5a4e35795558cf664e15..6c644ce12a82507532be3f2edee3605f06d15b79 100644 (file)
@@ -628,7 +628,7 @@ void OPENSSL_init(void);
  * into a defined order as the return value when a != b is undefined, other
  * than to be non-zero.
  */
-int CRYPTO_memcmp(const void *a, const void *b, size_t len);
+int CRYPTO_memcmp(const volatile void *a, const volatile void *b, size_t len);
 
 /* BEGIN ERROR CODES */
 /*