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);