diff --git a/src/dap_enc_msrln.c b/src/dap_enc_msrln.c index 80e7ba83896a2ec42bd2e135de5371c4b53e816d..b48008059adffb61d8b8e0ab243e067dce882101 100755 --- a/src/dap_enc_msrln.c +++ b/src/dap_enc_msrln.c @@ -112,8 +112,6 @@ size_t dap_enc_msrln_gen_bob_shared_key(struct dap_enc_key* b_key, const void* a *b_pub = malloc(MSRLN_PKB_BYTES); if(b_pub == NULL) { ret = 0; - DAP_DELETE(b_pub); - b_pub = NULL; DAP_DELETE(b_key->priv_key_data); b_key->priv_key_data = NULL; return ret; @@ -125,8 +123,6 @@ size_t dap_enc_msrln_gen_bob_shared_key(struct dap_enc_key* b_key, const void* a ret = 0; DAP_DELETE(b_pub); b_pub = NULL; - DAP_DELETE(b_key->priv_key_data); - b_key->priv_key_data = NULL; return ret; } diff --git a/src/sig_bliss/bliss_b_keys.c b/src/sig_bliss/bliss_b_keys.c index 1740d31e7c03c9e6c7269285adf9b6e08e81ba27..7e8e4a4223c0ce38ba9985bac5516f4d4b3e48d5 100755 --- a/src/sig_bliss/bliss_b_keys.c +++ b/src/sig_bliss/bliss_b_keys.c @@ -118,17 +118,12 @@ static int32_t bliss_b_private_key_init(bliss_private_key_t *private_key, bliss_ f = calloc(n, sizeof(int32_t)); if (f == NULL) { - free(f); - free(g); - free(a); return BLISS_B_NO_MEM; } g = calloc(n, sizeof(int32_t)); if (g == NULL) { free(f); - free(g); - free(a); return BLISS_B_NO_MEM; } @@ -136,7 +131,6 @@ static int32_t bliss_b_private_key_init(bliss_private_key_t *private_key, bliss_ if (a == NULL) { free(f); free(g); - free(a); return BLISS_B_NO_MEM; } diff --git a/src/sig_bliss/bliss_b_signatures.c b/src/sig_bliss/bliss_b_signatures.c index 0e1de13240b64cc4302a7f86e16d9ff3368b7710..173fa49675c72fbddcde02e0e57ec24dceccf8bb 100755 --- a/src/sig_bliss/bliss_b_signatures.c +++ b/src/sig_bliss/bliss_b_signatures.c @@ -404,18 +404,7 @@ int32_t bliss_b_sign(bliss_signature_t *signature, const bliss_private_key_t *p /* initialize our sampler */ if (!sampler_init(&sampler, p.sigma, p.ell, p.precision, entropy)) { retval = BLISS_B_BAD_ARGS; - secure_free(&z1, n); - secure_free(&z2, n); - secure_free((int32_t **)&indices, kappa); - free(hash); - hash = NULL; delete_ntt_state(state); - secure_free(&v, n); - secure_free(&dv, n); - secure_free(&y1, n); - secure_free(&y2, n); - secure_free(&v1, n); - secure_free(&v2, n); return retval; } @@ -429,46 +418,91 @@ int32_t bliss_b_sign(bliss_signature_t *signature, const bliss_private_key_t *p z1 = malloc(n * sizeof(int32_t)); if(z1 == NULL){ + free(hash); return BLISS_B_NO_MEM; } z2 = malloc(n * sizeof(int32_t)); if(z2 == NULL){ + free(hash); + secure_free(&z1, n); return BLISS_B_NO_MEM; } v1 = malloc(n * sizeof(int32_t)); if(v1 == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); return BLISS_B_NO_MEM; } v2 = malloc(n * sizeof(int32_t)); if(v2 == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); + secure_free(&v1, n); return BLISS_B_NO_MEM; } y1 = malloc(n * sizeof(int32_t)); if(y1 == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); + secure_free(&v1, n); + secure_free(&v2, n); return BLISS_B_NO_MEM; } y2 = malloc(n * sizeof(int32_t)); if(y2 == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); + secure_free(&v1, n); + secure_free(&v2, n); + secure_free(&y1, n); return BLISS_B_NO_MEM; } v = calloc(n, sizeof(int32_t)); if(v == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); + secure_free(&v1, n); + secure_free(&v2, n); + secure_free(&y1, n); + secure_free(&y2, n); return BLISS_B_NO_MEM; } dv = calloc(n, sizeof(int32_t)); if(dv == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); + secure_free(&v1, n); + secure_free(&v2, n); + secure_free(&y1, n); + secure_free(&y2, n); + secure_free(&v, n); return BLISS_B_NO_MEM; } indices = calloc(kappa, sizeof(int32_t)); if(indices == NULL){ + free(hash); + secure_free(&z1, n); + secure_free(&z2, n); + secure_free(&v1, n); + secure_free(&v2, n); + secure_free(&y1, n); + secure_free(&y2, n); + secure_free(&v, n); + secure_free(&dv, n); return BLISS_B_NO_MEM; }