projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Properly own the duplicated string
[openssl.git]
/
crypto
/
hmac
/
hm_ameth.c
diff --git
a/crypto/hmac/hm_ameth.c
b/crypto/hmac/hm_ameth.c
index cd29c0ccd8ab50afc5becedf61726ce76943abbb..98e73e937ff8157fdb23bdf13f27ccd116b1ddc6 100644
(file)
--- a/
crypto/hmac/hm_ameth.c
+++ b/
crypto/hmac/hm_ameth.c
@@
-75,7
+75,7
@@
static int hmac_size(const EVP_PKEY *pkey)
static void hmac_key_free(EVP_PKEY *pkey)
{
static void hmac_key_free(EVP_PKEY *pkey)
{
- ASN1_OCTET_STRING *os =
(ASN1_OCTET_STRING *)pkey->pkey.ptr
;
+ ASN1_OCTET_STRING *os =
EVP_PKEY_get0(pkey)
;
if (os) {
if (os->data)
OPENSSL_cleanse(os->data, os->length);
if (os) {
if (os->data)
OPENSSL_cleanse(os->data, os->length);
@@
-107,16
+107,21
@@
static int old_hmac_decode(EVP_PKEY *pkey,
{
ASN1_OCTET_STRING *os;
os = ASN1_OCTET_STRING_new();
{
ASN1_OCTET_STRING *os;
os = ASN1_OCTET_STRING_new();
- if (!os || !ASN1_OCTET_STRING_set(os, *pder, derlen))
- return 0;
- EVP_PKEY_assign(pkey, EVP_PKEY_HMAC, os);
+ if (os == NULL || !ASN1_OCTET_STRING_set(os, *pder, derlen))
+ goto err;
+ if (!EVP_PKEY_assign(pkey, EVP_PKEY_HMAC, os))
+ goto err;
return 1;
return 1;
+
+ err:
+ ASN1_OCTET_STRING_free(os);
+ return 0;
}
static int old_hmac_encode(const EVP_PKEY *pkey, unsigned char **pder)
{
int inc;
}
static int old_hmac_encode(const EVP_PKEY *pkey, unsigned char **pder)
{
int inc;
- ASN1_OCTET_STRING *os =
(ASN1_OCTET_STRING *)pkey->pkey.ptr
;
+ ASN1_OCTET_STRING *os =
EVP_PKEY_get0(pkey)
;
if (pder) {
if (!*pder) {
*pder = OPENSSL_malloc(os->length);
if (pder) {
if (!*pder) {
*pder = OPENSSL_malloc(os->length);