diff options
author | nagendra modadugu <ngm@google.com> | 2017-05-12 03:29:02 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-05-12 03:29:02 +0000 |
commit | 98b0e9b9f49ad6087119c61ac63adb971de13f7e (patch) | |
tree | c0ffc44c5863a99b1c3324c0943b4d5526496031 | |
parent | 2022877777fec598485d9555b06b8edc66c980ae (diff) | |
parent | 19237091e3f57a9db0882bce942cb1ec56f9db2d (diff) | |
download | tpm2-98b0e9b9f49ad6087119c61ac63adb971de13f7e.tar.gz |
Rewrite MemoryEqual() to be constant-time. am: e760ff57b9 am: a71795a2cd am: 07a9435803
am: 19237091e3
Change-Id: Ie987d7bf3c9872ec35cbe88f863ebaf58b3e4950
-rw-r--r-- | MemoryLib.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/MemoryLib.c b/MemoryLib.c index 7beac63..178848e 100644 --- a/MemoryLib.c +++ b/MemoryLib.c @@ -75,15 +75,15 @@ MemoryEqual( UINT32 size // IN: size of bytes being compared ) { - BOOL equal = TRUE; + BOOL diff = FALSE; const BYTE *b1, *b2; b1 = (BYTE *)buffer1; b2 = (BYTE *)buffer2; // Compare all bytes so that there is no leakage of information // due to timing differences. for(; size > 0; size--) - equal = (*b1++ == *b2++) && equal; - return equal; + diff |= *b1++ ^ *b2++; + return !diff; } // // |