diff --git a/crypto/src/dap_cert.c b/crypto/src/dap_cert.c index b16588a2590bdc686a20cc558f2d3fbbcab4aab6..cdcfbbcdd3e3b13615173544b6dfc41898c47339 100755 --- a/crypto/src/dap_cert.c +++ b/crypto/src/dap_cert.c @@ -505,6 +505,7 @@ int dap_cert_get_pkey_hash(dap_cert_t *a_cert, dap_hash_fast_t *a_out_hash) if (!l_pub_key || !l_pub_key_size) return -2; dap_hash_fast(l_pub_key, l_pub_key_size, a_out_hash); + DAP_DELETE(l_pub_key); return 0; } @@ -519,17 +520,15 @@ int dap_cert_compare_with_sign (dap_cert_t *a_cert,const dap_sign_t *a_sign) { dap_return_val_if_pass(!a_cert || !a_cert->enc_key || !a_sign, -4); if ( dap_sign_type_from_key_type( a_cert->enc_key->type ).type == a_sign->header.type.type ){ - int l_ret; size_t l_pub_key_size = 0; // serialize public key uint8_t *l_pub_key = dap_enc_key_serialize_pub_key(a_cert->enc_key, &l_pub_key_size); - if ( l_pub_key_size == a_sign->header.sign_pkey_size){ - l_ret = memcmp ( l_pub_key, a_sign->pkey_n_sign, a_sign->header.sign_pkey_size ); - }else - l_ret = -2; // Wrong pkey size + int l_ret = l_pub_key_size == a_sign->header.sign_pkey_size + ? memcmp(l_pub_key, a_sign->pkey_n_sign, a_sign->header.sign_pkey_size) + : -2; DAP_DELETE(l_pub_key); return l_ret; - }else + } else return -3; // Wrong sign type } diff --git a/crypto/src/dap_enc_key.c b/crypto/src/dap_enc_key.c index caa82379edcfacbb4fe9fd02123e2ee2fca67641..8b8eb7f4b6fe2052828042e8e5d3bfd393d9d3c4 100755 --- a/crypto/src/dap_enc_key.c +++ b/crypto/src/dap_enc_key.c @@ -876,7 +876,8 @@ uint8_t *dap_enc_key_serialize(dap_enc_key_t *a_key, size_t *a_buflen) // out work DAP_DEL_MULTY(l_ser_skey, l_ser_pkey); - a_buflen ? *a_buflen = l_buflen : 0; + if (a_buflen) + *a_buflen = l_buflen; return l_ret; }