37532b3
diff -rupN --no-dereference openssl-3.0.9/crypto/ec/ec_lib.c openssl-3.0.9-new/crypto/ec/ec_lib.c
37532b3
--- openssl-3.0.9/crypto/ec/ec_lib.c	2023-05-30 14:31:57.000000000 +0200
37532b3
+++ openssl-3.0.9-new/crypto/ec/ec_lib.c	2023-05-31 14:33:18.763112140 +0200
37532b3
@@ -744,12 +744,16 @@ EC_POINT *EC_POINT_new(const EC_GROUP *g
37532b3
 
37532b3
 void EC_POINT_free(EC_POINT *point)
37532b3
 {
37532b3
+#ifdef FIPS_MODULE
37532b3
+    EC_POINT_clear_free(point);
37532b3
+#else
37532b3
     if (point == NULL)
37532b3
         return;
37532b3
 
37532b3
     if (point->meth->point_finish != 0)
37532b3
         point->meth->point_finish(point);
37532b3
     OPENSSL_free(point);
37532b3
+#endif
37532b3
 }
37532b3
 
37532b3
 void EC_POINT_clear_free(EC_POINT *point)
37532b3
diff -rupN --no-dereference openssl-3.0.9/crypto/ffc/ffc_params.c openssl-3.0.9-new/crypto/ffc/ffc_params.c
37532b3
--- openssl-3.0.9/crypto/ffc/ffc_params.c	2023-05-30 14:31:57.000000000 +0200
37532b3
+++ openssl-3.0.9-new/crypto/ffc/ffc_params.c	2023-05-31 14:33:18.762112140 +0200
37532b3
@@ -27,10 +27,10 @@ void ossl_ffc_params_init(FFC_PARAMS *pa
37532b3
 
37532b3
 void ossl_ffc_params_cleanup(FFC_PARAMS *params)
37532b3
 {
37532b3
-    BN_free(params->p);
37532b3
-    BN_free(params->q);
37532b3
-    BN_free(params->g);
37532b3
-    BN_free(params->j);
37532b3
+    BN_clear_free(params->p);
37532b3
+    BN_clear_free(params->q);
37532b3
+    BN_clear_free(params->g);
37532b3
+    BN_clear_free(params->j);
37532b3
     OPENSSL_free(params->seed);
37532b3
     ossl_ffc_params_init(params);
37532b3
 }
37532b3
diff -rupN --no-dereference openssl-3.0.9/crypto/rsa/rsa_lib.c openssl-3.0.9-new/crypto/rsa/rsa_lib.c
37532b3
--- openssl-3.0.9/crypto/rsa/rsa_lib.c	2023-05-30 14:31:57.000000000 +0200
37532b3
+++ openssl-3.0.9-new/crypto/rsa/rsa_lib.c	2023-05-31 14:33:18.762112140 +0200
37532b3
@@ -155,8 +155,8 @@ void RSA_free(RSA *r)
37532b3
 
37532b3
     CRYPTO_THREAD_lock_free(r->lock);
37532b3
 
37532b3
-    BN_free(r->n);
37532b3
-    BN_free(r->e);
37532b3
+    BN_clear_free(r->n);
37532b3
+    BN_clear_free(r->e);
37532b3
     BN_clear_free(r->d);
37532b3
     BN_clear_free(r->p);
37532b3
     BN_clear_free(r->q);
37532b3
diff -rupN --no-dereference openssl-3.0.9/providers/implementations/kdfs/hkdf.c openssl-3.0.9-new/providers/implementations/kdfs/hkdf.c
37532b3
--- openssl-3.0.9/providers/implementations/kdfs/hkdf.c	2023-05-30 14:31:57.000000000 +0200
37532b3
+++ openssl-3.0.9-new/providers/implementations/kdfs/hkdf.c	2023-05-31 14:33:18.762112140 +0200
37532b3
@@ -117,7 +117,7 @@ static void kdf_hkdf_reset(void *vctx)
37532b3
     void *provctx = ctx->provctx;
37532b3
 
37532b3
     ossl_prov_digest_reset(&ctx->digest);
37532b3
-    OPENSSL_free(ctx->salt);
37532b3
+    OPENSSL_clear_free(ctx->salt, ctx->salt_len);
37532b3
     OPENSSL_free(ctx->prefix);
37532b3
     OPENSSL_free(ctx->label);
37532b3
     OPENSSL_clear_free(ctx->data, ctx->data_len);
37532b3
diff -rupN --no-dereference openssl-3.0.9/providers/implementations/kdfs/pbkdf2.c openssl-3.0.9-new/providers/implementations/kdfs/pbkdf2.c
37532b3
--- openssl-3.0.9/providers/implementations/kdfs/pbkdf2.c	2023-05-30 14:31:57.000000000 +0200
37532b3
+++ openssl-3.0.9-new/providers/implementations/kdfs/pbkdf2.c	2023-05-31 14:33:18.763112140 +0200
37532b3
@@ -83,7 +83,7 @@ static void *kdf_pbkdf2_new(void *provct
37532b3
 static void kdf_pbkdf2_cleanup(KDF_PBKDF2 *ctx)
37532b3
 {
37532b3
     ossl_prov_digest_reset(&ctx->digest);
37532b3
-    OPENSSL_free(ctx->salt);
37532b3
+    OPENSSL_clear_free(ctx->salt, ctx->salt_len);
37532b3
     OPENSSL_clear_free(ctx->pass, ctx->pass_len);
37532b3
     memset(ctx, 0, sizeof(*ctx));
37532b3
 }