From d24fd47ff42cdf5d39c16b0668703b236c5336b7 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Thu, 26 Oct 2017 21:13:16 -0400 Subject: [PATCH] Fold EC_POINT_clear_free into EC_POINT_free. All frees zero memory now. Change-Id: I5b04a0d14f38d5a7422e148d077fcba85a593594 Reviewed-on: https://boringssl-review.googlesource.com/22225 Commit-Queue: Adam Langley Reviewed-by: Adam Langley CQ-Verified: CQ bot account: commit-bot@chromium.org --- crypto/fipsmodule/ec/ec.c | 10 +--------- crypto/fipsmodule/ec/internal.h | 1 - crypto/fipsmodule/ec/simple.c | 6 ------ crypto/fipsmodule/ec/wnaf.c | 2 +- include/openssl/ec.h | 7 +++---- 5 files changed, 5 insertions(+), 21 deletions(-) diff --git a/crypto/fipsmodule/ec/ec.c b/crypto/fipsmodule/ec/ec.c index a39ca599e7..4e8f2d23a9 100644 --- a/crypto/fipsmodule/ec/ec.c +++ b/crypto/fipsmodule/ec/ec.c @@ -628,15 +628,7 @@ void EC_POINT_free(EC_POINT *point) { OPENSSL_free(point); } -void EC_POINT_clear_free(EC_POINT *point) { - if (!point) { - return; - } - - ec_GFp_simple_point_clear_finish(point); - - OPENSSL_free(point); -} +void EC_POINT_clear_free(EC_POINT *point) { EC_POINT_free(point); } int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) { if (dest->meth != src->meth) { diff --git a/crypto/fipsmodule/ec/internal.h b/crypto/fipsmodule/ec/internal.h index 39c9349ab9..22cd42a9ce 100644 --- a/crypto/fipsmodule/ec/internal.h +++ b/crypto/fipsmodule/ec/internal.h @@ -166,7 +166,6 @@ int ec_GFp_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a, unsigned ec_GFp_simple_group_get_degree(const EC_GROUP *); int ec_GFp_simple_point_init(EC_POINT *); void ec_GFp_simple_point_finish(EC_POINT *); -void ec_GFp_simple_point_clear_finish(EC_POINT *); int ec_GFp_simple_point_copy(EC_POINT *, const EC_POINT *); int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *); int ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP *, EC_POINT *, diff --git a/crypto/fipsmodule/ec/simple.c b/crypto/fipsmodule/ec/simple.c index 75c06da132..e46550f6c1 100644 --- a/crypto/fipsmodule/ec/simple.c +++ b/crypto/fipsmodule/ec/simple.c @@ -249,12 +249,6 @@ void ec_GFp_simple_point_finish(EC_POINT *point) { BN_free(&point->Z); } -void ec_GFp_simple_point_clear_finish(EC_POINT *point) { - BN_clear_free(&point->X); - BN_clear_free(&point->Y); - BN_clear_free(&point->Z); -} - int ec_GFp_simple_point_copy(EC_POINT *dest, const EC_POINT *src) { if (!BN_copy(&dest->X, &src->X) || !BN_copy(&dest->Y, &src->Y) || diff --git a/crypto/fipsmodule/ec/wnaf.c b/crypto/fipsmodule/ec/wnaf.c index 0e3ee13a51..842a8fb663 100644 --- a/crypto/fipsmodule/ec/wnaf.c +++ b/crypto/fipsmodule/ec/wnaf.c @@ -446,7 +446,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *g_scalar, } if (val != NULL) { for (i = 0; i < num_val; i++) { - EC_POINT_clear_free(val[i]); + EC_POINT_free(val[i]); } OPENSSL_free(val); diff --git a/include/openssl/ec.h b/include/openssl/ec.h index 4a08a9b1f1..f866ae9ea1 100644 --- a/include/openssl/ec.h +++ b/include/openssl/ec.h @@ -162,10 +162,6 @@ OPENSSL_EXPORT EC_POINT *EC_POINT_new(const EC_GROUP *group); // EC_POINT_free frees |point| and the data that it points to. OPENSSL_EXPORT void EC_POINT_free(EC_POINT *point); -// EC_POINT_clear_free clears the data that |point| points to, frees it and -// then frees |point| itself. -OPENSSL_EXPORT void EC_POINT_clear_free(EC_POINT *point); - // EC_POINT_copy sets |*dest| equal to |*src|. It returns one on success and // zero otherwise. OPENSSL_EXPORT int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src); @@ -350,6 +346,9 @@ typedef struct { OPENSSL_EXPORT size_t EC_get_builtin_curves(EC_builtin_curve *out_curves, size_t max_num_curves); +// EC_POINT_clear_free calls |EC_POINT_free|. +OPENSSL_EXPORT void EC_POINT_clear_free(EC_POINT *point); + // Old code expects to get EC_KEY from ec.h. #include