Merge "Fix potential use-after-free in hw auth token handling." into mnc-dev
diff --git a/keystore/operation.cpp b/keystore/operation.cpp
index 667f456..74d65f6 100644
--- a/keystore/operation.cpp
+++ b/keystore/operation.cpp
@@ -115,11 +115,7 @@
if (entry == mMap.end()) {
return false;
}
- if (entry->second.authToken.get() != NULL) {
- *outToken = *entry->second.authToken;
- } else {
- *outToken = NULL;
- }
+ *outToken = entry->second.authToken.get();
return true;
}
@@ -128,8 +124,8 @@
if (entry == mMap.end()) {
return false;
}
- entry->second.authToken.reset(new const hw_auth_token_t*);
- *entry->second.authToken = authToken;
+ entry->second.authToken.reset(new hw_auth_token_t);
+ *entry->second.authToken = *authToken;
return true;
}
diff --git a/keystore/operation.h b/keystore/operation.h
index fb9583f..07238d1 100644
--- a/keystore/operation.h
+++ b/keystore/operation.h
@@ -71,7 +71,7 @@
const keymaster1_device_t* device;
Unique_keymaster_key_characteristics characteristics;
sp<IBinder> appToken;
- std::unique_ptr<const hw_auth_token_t*> authToken;
+ std::unique_ptr<hw_auth_token_t> authToken;
};
std::map<sp<IBinder>, struct Operation> mMap;
std::vector<sp<IBinder>> mLru;