libqaeda

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | README | LICENSE

commit 264498e48dc93916697a4b570f6c19fb0e221ec7
parent 79e00268cacf1610679dab0299a6990409514df6
Author: lash <dev@holbrook.no>
Date:   Fri,  4 Apr 2025 20:31:42 +0100

Fix memory leak in cert sig

Diffstat:
Msrc/cli/main.c | 13++++++-------
Msrc/crypto/gcrypt.c | 3+++
Msrc/lq/cert.c | 5+++--
Msrc/lq/msg.c | 3++-
4 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/cli/main.c b/src/cli/main.c @@ -119,11 +119,11 @@ int main(int argc, char **argv) { return 1; } cert = lq_certificate_new(NULL); -// r = lq_certificate_request(cert, req, pk_alice); -// if (r != ERR_OK) { -// lq_ui_free(); -// return 1; -// } + r = lq_certificate_request(cert, req, pk_alice); + if (r != ERR_OK) { + lq_ui_free(); + return 1; + } // // res = lq_msg_new("foo", 4); // if (res == NULL) { @@ -136,9 +136,8 @@ int main(int argc, char **argv) { // return 1; // } - r = lq_certificate_verify(cert, pubk_alice, NULL); +// r = lq_certificate_verify(cert, pubk_alice, NULL); - lq_msg_free(req); lq_certificate_free(cert); lq_ui_free(); diff --git a/src/crypto/gcrypt.c b/src/crypto/gcrypt.c @@ -1093,6 +1093,9 @@ void lq_signature_free(LQSig *sig) { if (sig->pubkey != NULL) { lq_publickey_free(sig->pubkey); } + if (sig->impl != NULL) { + lq_free(sig->impl); + } lq_free(sig); } diff --git a/src/lq/cert.c b/src/lq/cert.c @@ -294,8 +294,8 @@ int lq_certificate_deserialize(LQCert **cert, char *in, size_t in_len, LQResolve asn1_node item; LQCert *p; - lq_set(&node, 0, sizeof(node)); - lq_set(&item, 0, sizeof(item)); + lq_zero(&node, sizeof(node)); + lq_zero(&item, sizeof(item)); r = asn1_array2tree(defs_asn1_tab, &node, err); if (r != ASN1_SUCCESS) { return ERR_INIT; @@ -325,6 +325,7 @@ int lq_certificate_deserialize(LQCert **cert, char *in, size_t in_len, LQResolve if (r != ASN1_SUCCESS) { return ERR_READ; } + r = lq_msg_deserialize(&p->request, tmp, c, resolve); if (r != ERR_OK) { return r; diff --git a/src/lq/msg.c b/src/lq/msg.c @@ -55,13 +55,14 @@ LQSig* lq_msg_sign_extra(LQMsg *msg, LQPrivKey *pk, const char *salt, const char if (r != ERR_OK) { return NULL; } + lq_free(data); return lq_privatekey_sign(pk, digest, LQ_DIGEST_LEN, salt); } void lq_msg_free(LQMsg *msg) { //if (msg->pubkey->pk = NULL) { if (msg->pubkey != NULL) { - lq_free(msg->pubkey); + lq_publickey_free(msg->pubkey); } lq_free(msg->data); lq_free(msg);