aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRich Salz <rsalz@akamai.com>2016-01-29 12:09:05 -0500
committerRich Salz <rsalz@openssl.org>2016-01-30 14:37:43 -0500
commit98ab57644f44d2d83595c2d0f69138a284d6096b (patch)
tree5ec5e8ff62efd3bae592e6b59aab422ce25badfc
parentc10d1bc81cb047cbd53f8cc430632b6a4a70252d (diff)
downloadopenssl-98ab57644f44d2d83595c2d0f69138a284d6096b.tar.gz
GH102: Add volatile to CRYPTO_memcmp
Can't hurt and seems to prevent problems from some over-aggressive (LTO?) compilers. Reviewed-by: Richard Levitte <levitte@openssl.org>
-rw-r--r--crypto/cryptlib.c6
-rw-r--r--include/openssl/crypto.h2
2 files changed, 4 insertions, 4 deletions
diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
index 14a84243c6..9473799a48 100644
--- a/crypto/cryptlib.c
+++ b/crypto/cryptlib.c
@@ -465,11 +465,11 @@ void OpenSSLDie(const char *file, int line, const char *assertion)
#endif
}
-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++)
diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h
index 26f6c79c8e..024f2c9b72 100644
--- a/include/openssl/crypto.h
+++ b/include/openssl/crypto.h
@@ -542,7 +542,7 @@ int OPENSSL_gmtime_diff(int *pday, int *psec,
* 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 */
/*