diff options
author | Shawn Willden <swillden@google.com> | 2014-06-13 11:51:08 -0600 |
---|---|---|
committer | Shawn Willden <swillden@google.com> | 2014-06-17 11:46:11 -0600 |
commit | 2cd28fac7f7cb71f71c54d9de9d407b1dd4e15bc (patch) | |
tree | 716182964c16e93cf96cfa3d592f5b18306ee812 | |
parent | 8d0531e9748aa5e4860d3b52c6b0c88cea52f8bd (diff) | |
download | security-2cd28fac7f7cb71f71c54d9de9d407b1dd4e15bc.tar.gz |
Use template instead of macro to release UniquePtrs.
Change-Id: Icb6674517ed48e3f4bb56818eef0c0756d6dd3d3
-rw-r--r-- | softkeymaster/keymaster_openssl.cpp | 14 |
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; |