From f238923af23a7cac57ac7119f282c831bcf99094 Mon Sep 17 00:00:00 2001 From: "Diego F. Aranha" Date: Thu, 10 Oct 2024 01:59:40 +0200 Subject: [PATCH] Fixing memory management bugs. --- src/bn/relic_bn_rec.c | 7 +++++-- src/cp/relic_cp_bls.c | 3 ++- src/cp/relic_cp_pcdel.c | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/bn/relic_bn_rec.c b/src/bn/relic_bn_rec.c index 4e8bd7e07..3eb008299 100644 --- a/src/bn/relic_bn_rec.c +++ b/src/bn/relic_bn_rec.c @@ -895,11 +895,14 @@ void bn_rec_sac(int8_t *b, size_t *len, bn_t *k, size_t c, size_t m, size_t n) { } RLC_TRY { - fp_prime_get_par(t[0]); - l = RLC_MAX(l, bn_bits(t[0]) + 1); for (size_t i = 0; i < m; i++) { bn_null(t[i]); bn_new(t[i]); + } + + fp_prime_get_par(t[0]); + l = RLC_MAX(l, bn_bits(t[0]) + 1); + for (size_t i = 0; i < m; i++) { bn_copy(t[i], k[i]); /* The current basis for some curves might be one bit longer. */ if (ep_curve_is_pairf() == EP_BN) { diff --git a/src/cp/relic_cp_bls.c b/src/cp/relic_cp_bls.c index 27b8e24ba..8ffdd375c 100644 --- a/src/cp/relic_cp_bls.c +++ b/src/cp/relic_cp_bls.c @@ -136,7 +136,8 @@ int cp_bls_agg_sig(g1_t sig, g2_t a, const g1_t s, const g2_t q) { RLC_THROW(ERR_NO_MEMORY); } bn_new(t); - g1_new(p); + g1_new(u); + g2_new(p); md_map(h, buf, g2_size_bin(q, 0)); bn_read_bin(t, h, RLC_MIN(RLC_MD_LEN, RLC_CEIL(pc_param_level(), 8))); diff --git a/src/cp/relic_cp_pcdel.c b/src/cp/relic_cp_pcdel.c index 3c2ae4a47..041d0d630 100644 --- a/src/cp/relic_cp_pcdel.c +++ b/src/cp/relic_cp_pcdel.c @@ -829,8 +829,8 @@ int cp_ambat_ans(gt_t *gs, const g2_t *rs, const g1_t a, const g2_t b, } g1_norm(ps[0], ps[0]); g2_copy(qs[0], b); - g1_copy(ps[1], a); - g2_mul_gen(qs[1], d); + g1_mul(ps[1], a, d); + g2_get_gen(qs[1]); pc_map_sim(gs[m], ps, qs, 2); } RLC_CATCH_ANY { @@ -965,6 +965,7 @@ int cp_amprd_ask(bn_t d, g2_t *ds, g1_t a1, g2_t b1, g1_t a2, g2_t b2, RLC_TRY { g1_new(t); + g1_new(a); g1_set_infty(a); for (size_t i = 0; i < m; i++) {