summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortyiu <tyiu@google.com>2023-02-21 22:38:32 +0000
committerTimothy Yiu <tyiu@google.com>2023-03-15 04:07:55 +0000
commitca8d670c1656a6a47ef0f31fdfe1744d75fe5543 (patch)
tree7abe60c0b7958e718226f4fac3ab4120693b5426
parent0905d59160e5cd5ff7bf63261c7b5cad6b875b9a (diff)
downloadnative-ca8d670c1656a6a47ef0f31fdfe1744d75fe5543.tar.gz
RESTRICT AUTOMERGE: Fix HMAC Compare time attack
Added constant time HMAC comparison preventing attackers being able to forge HMAC for input by measuring the time difference between non-constant time comparison of HMAC Bug: 261085213 Test: None Tag: #security Change-Id: I7cd6b68589fd0042b9396dc599b917a0f3220ff7
-rw-r--r--services/inputflinger/dispatcher/InputDispatcher.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/services/inputflinger/dispatcher/InputDispatcher.cpp b/services/inputflinger/dispatcher/InputDispatcher.cpp
index 5e9427ad87..da461285f5 100644
--- a/services/inputflinger/dispatcher/InputDispatcher.cpp
+++ b/services/inputflinger/dispatcher/InputDispatcher.cpp
@@ -27,6 +27,7 @@
#include <ftl/enum.h>
#include <gui/SurfaceComposerClient.h>
#include <input/InputDevice.h>
+#include <openssl/mem.h>
#include <powermanager/PowerManager.h>
#include <unistd.h>
#include <utils/Trace.h>
@@ -4422,7 +4423,7 @@ std::unique_ptr<VerifiedInputEvent> InputDispatcher::verifyInputEvent(const Inpu
if (calculatedHmac == INVALID_HMAC) {
return nullptr;
}
- if (calculatedHmac != event.getHmac()) {
+ if (0 != CRYPTO_memcmp(calculatedHmac.data(), event.getHmac().data(), calculatedHmac.size())) {
return nullptr;
}
return result;