Commit 0cfb4226 authored by Bernd Edlinger's avatar Bernd Edlinger
Browse files

Fix a memory leak in ecdh/ecdsa_check.

parent 282c1321
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -225,9 +225,16 @@ ECDH_DATA *ecdh_check(EC_KEY *key)
             */
            ecdh_data_free(ecdh_data);
            ecdh_data = (ECDH_DATA *)data;
        } else if (EC_KEY_get_key_method_data(key, ecdh_data_dup,
                                              ecdh_data_free,
                                              ecdh_data_free) != ecdh_data) {
            /* Or an out of memory error in EC_KEY_insert_key_method_data. */
            ecdh_data_free(ecdh_data);
            return NULL;
        }
    } else
    } else {
        ecdh_data = (ECDH_DATA *)data;
    }
#ifdef OPENSSL_FIPS
    if (FIPS_mode() && !(ecdh_data->flags & ECDH_FLAG_FIPS_METHOD)
        && !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW)) {
+8 −1
Original line number Diff line number Diff line
@@ -203,9 +203,16 @@ ECDSA_DATA *ecdsa_check(EC_KEY *key)
             */
            ecdsa_data_free(ecdsa_data);
            ecdsa_data = (ECDSA_DATA *)data;
        } else if (EC_KEY_get_key_method_data(key, ecdsa_data_dup,
                                              ecdsa_data_free,
                                              ecdsa_data_free) != ecdsa_data) {
            /* Or an out of memory error in EC_KEY_insert_key_method_data. */
            ecdsa_data_free(ecdsa_data);
            return NULL;
        }
    } else
    } else {
        ecdsa_data = (ECDSA_DATA *)data;
    }
#ifdef OPENSSL_FIPS
    if (FIPS_mode() && !(ecdsa_data->flags & ECDSA_FLAG_FIPS_METHOD)
        && !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW)) {