trusty: tui: Fix memory leak on failure path
Bug: 272813227
Test: run fuzzer
Change-Id: Ifc86f2f5e210a7c1fb0b0564f1da00afab333c35
diff --git a/src/main.cpp b/src/main.cpp
index f333907..f098aef 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -42,6 +42,7 @@
static bool get_auth_token_key(teeui::AuthTokenKey& authKey) {
long rc = keymaster_open();
+ bool result = false;
if (rc < 0) {
return false;
@@ -52,17 +53,18 @@
uint32_t local_length = 0;
rc = keymaster_get_auth_token_key(session, &key, &local_length);
keymaster_close(session);
- TLOGD("%s, key length = %u\n", __func__, local_length);
- if (local_length != teeui::kAuthTokenKeySize) {
- return false;
- }
+
if (rc == NO_ERROR) {
- memcpy(authKey.data(), key, teeui::kAuthTokenKeySize);
- } else {
- return false;
+ if (local_length == teeui::kAuthTokenKeySize) {
+ /* Success - store the key */
+ memcpy(authKey.data(), key, teeui::kAuthTokenKeySize);
+ result = true;
+ }
+
+ free(key);
}
- return true;
+ return result;
}
struct __attribute__((__packed__)) confirmationui_req {