Merge "keystore: fix memory leak from readKeymasterBlob" am: 3746fcf327 am: 1156db460e
am: fd05934b20

Change-Id: I460e14a523c56e2703fdad89c0f81368d3048bb5
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);