summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Drysdale <drysdale@google.com>2023-05-25 07:33:10 +0100
committerDavid Drysdale <drysdale@google.com>2023-06-02 13:26:45 +0000
commit74b3933bb7ff7f4b746be12648fcae68229e1e8a (patch)
tree798fb07c6f9b16fb1f6de12cd6a8ed08708da0df
parentda4c531d6b34671311bbcc6c516d53bb485e0bf2 (diff)
downloadkeymaster-74b3933bb7ff7f4b746be12648fcae68229e1e8a.tar.gz
Don't abort on invalid message in fuzzing build
Bug: 272805221 Change-Id: I3762b6db817ec649d31e42dff399c54d96e28cca
-rw-r--r--trusty_keymaster.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/trusty_keymaster.cpp b/trusty_keymaster.cpp
index 1c87ed6..673eed4 100644
--- a/trusty_keymaster.cpp
+++ b/trusty_keymaster.cpp
@@ -43,9 +43,22 @@ GetVersion2Response TrustyKeymaster::GetVersion2(
break;
default:
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ // In a fuzzing build, if the fuzzer sends invalid messages we should
+ // log an error and continue, to allow the fuzzer to explore more of the
+ // code.
+ LOG_E("HAL sent invalid message version %d, struggling on as fuzzing build",
+ req.max_message_version);
+ context_->SetKmVersion((req.max_message_version & 0x01)
+ ? KmVersion::KEYMINT_3
+ : KmVersion::KEYMASTER_4);
+#else
+ // By default, if the HAL service is sending invalid messages then the
+ // safest thing to do is to terminate.
LOG_E("HAL sent invalid message version %d, crashing",
req.max_message_version);
abort();
+#endif
}
return AndroidKeymaster::GetVersion2(req);