free cleanup 12
[openssl.git] / crypto / ecdsa / ecs_lib.c
index 67e521fb8a021224ca851b26d5599d3ac968913e..3d012120f6bee95dd14283f0d726e429c57aa5cc 100644 (file)
@@ -105,7 +105,7 @@ static ECDSA_DATA *ECDSA_DATA_new_method(ENGINE *engine)
 {
     ECDSA_DATA *ret;
 
-    ret = (ECDSA_DATA *)OPENSSL_malloc(sizeof(ECDSA_DATA));
+    ret = OPENSSL_malloc(sizeof(ECDSA_DATA));
     if (ret == NULL) {
         ECDSAerr(ECDSA_F_ECDSA_DATA_NEW_METHOD, ERR_R_MALLOC_FAILURE);
         return (NULL);
@@ -160,9 +160,7 @@ static void ecdsa_data_free(void *data)
 #endif
     CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ECDSA, r, &r->ex_data);
 
-    OPENSSL_cleanse((void *)r, sizeof(ECDSA_DATA));
-
-    OPENSSL_free(r);
+    OPENSSL_clear_free((void *)r, sizeof(ECDSA_DATA));
 }
 
 ECDSA_DATA *ecdsa_check(EC_KEY *key)
@@ -314,6 +312,8 @@ void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name)
 
 void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method)
 {
+    if (!ecdsa_method)
+        return;
     if (ecdsa_method->flags & ECDSA_METHOD_FLAG_ALLOCATED)
         OPENSSL_free(ecdsa_method);
 }