summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Willden <swillden@google.com>2014-06-13 11:51:08 -0600
committerShawn Willden <swillden@google.com>2014-06-17 11:46:11 -0600
commit2cd28fac7f7cb71f71c54d9de9d407b1dd4e15bc (patch)
tree716182964c16e93cf96cfa3d592f5b18306ee812
parent8d0531e9748aa5e4860d3b52c6b0c88cea52f8bd (diff)
downloadsecurity-2cd28fac7f7cb71f71c54d9de9d407b1dd4e15bc.tar.gz
Use template instead of macro to release UniquePtrs.
Change-Id: Icb6674517ed48e3f4bb56818eef0c0756d6dd3d3
-rw-r--r--softkeymaster/keymaster_openssl.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/softkeymaster/keymaster_openssl.cpp b/softkeymaster/keymaster_openssl.cpp
index 3bf4cecd..5a25b657 100644
--- a/softkeymaster/keymaster_openssl.cpp
+++ b/softkeymaster/keymaster_openssl.cpp
@@ -92,8 +92,10 @@ typedef UniquePtr<keymaster_device_t> Unique_keymaster_device_t;
* scoped pointers when we've transferred ownership, without
* triggering a warning by not using the result of release().
*/
-#define OWNERSHIP_TRANSFERRED(obj) \
- typeof(obj.release()) _dummy __attribute__((unused)) = obj.release()
+template <typename T, typename Delete_T>
+inline void release_because_ownership_transferred(UniquePtr<T, Delete_T>& p) {
+ T* val __attribute__((unused)) = p.release();
+}
/*
* Checks this thread's OpenSSL error queue and logs if
@@ -274,7 +276,7 @@ static int generate_dsa_keypair(EVP_PKEY* pkey, const keymaster_dsa_keygen_param
logOpenSSLError("generate_dsa_keypair");
return -1;
}
- OWNERSHIP_TRANSFERRED(dsa);
+ release_because_ownership_transferred(dsa);
return 0;
}
@@ -331,7 +333,7 @@ static int generate_ec_keypair(EVP_PKEY* pkey, const keymaster_ec_keygen_params_
logOpenSSLError("generate_ec_keypair");
return -1;
}
- OWNERSHIP_TRANSFERRED(eckey);
+ release_because_ownership_transferred(eckey);
return 0;
}
@@ -365,7 +367,7 @@ static int generate_rsa_keypair(EVP_PKEY* pkey, const keymaster_rsa_keygen_param
logOpenSSLError("generate_rsa_keypair");
return -1;
}
- OWNERSHIP_TRANSFERRED(rsa);
+ release_because_ownership_transferred(rsa);
return 0;
}
@@ -431,7 +433,7 @@ __attribute__((visibility("default"))) int openssl_import_keypair(const keymaste
logOpenSSLError("openssl_import_keypair");
return -1;
}
- OWNERSHIP_TRANSFERRED(pkcs8);
+ release_because_ownership_transferred(pkcs8);
if (wrap_key(pkey.get(), EVP_PKEY_type(pkey->type), key_blob, key_blob_length)) {
return -1;