Merge "keystore: fix memory leak from readKeymasterBlob" am: 3746fcf327
am: 1156db460e
Change-Id: I6d6aa111778048b93602a8edae50a2851190fbe0
diff --git a/keystore/IKeystoreService.cpp b/keystore/IKeystoreService.cpp
index 9217fae..6863a3c 100644
--- a/keystore/IKeystoreService.cpp
+++ b/keystore/IKeystoreService.cpp
@@ -1697,6 +1697,12 @@
KeyCharacteristics outCharacteristics;
int ret = getKeyCharacteristics(name, clientId.get(), appData.get(), uid,
&outCharacteristics);
+ if (clientId.get() && clientId->data) {
+ free(const_cast<void*>(static_cast<const void*>(clientId->data)));
+ }
+ if (appData.get() && appData->data) {
+ free(const_cast<void*>(static_cast<const void*>(appData->data)));
+ }
reply->writeNoException();
reply->writeInt32(ret);
reply->writeParcelable(outCharacteristics);
@@ -1732,6 +1738,12 @@
int32_t uid = data.readInt32();
ExportResult result;
exportKey(name, format, clientId.get(), appData.get(), uid, &result);
+ if (clientId.get() && clientId->data) {
+ free(const_cast<void*>(static_cast<const void*>(clientId->data)));
+ }
+ if (appData.get() && appData->data) {
+ free(const_cast<void*>(static_cast<const void*>(appData->data)));
+ }
reply->writeNoException();
reply->writeParcelable(result);