Skip to content

Commit

Permalink
Fix some memory leaks
Browse files Browse the repository at this point in the history
Signed-off-by: Peter Jones <pjones@redhat.com>
  • Loading branch information
vathpela committed Nov 8, 2021
1 parent d71dd4c commit e4af617
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/cms_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,10 @@ is_valid_cert(CERTCertificate *cert, void *data)

privkey = PK11_FindPrivateKeyFromCert(slot, cert, cbd->cms);
if (privkey != NULL) {
if (cbd->cert)
CERT_DestroyCertificate(cbd->cert);
cbd->cert = CERT_DupCertificate(cert);
CERT_DestroyCertificate(cert);
SECKEY_DestroyPrivateKey(privkey);
return SECSuccess;
}
Expand All @@ -383,8 +386,15 @@ is_valid_cert_without_private_key(CERTCertificate *cert, void *data)
return SECFailure;
privkey = PK11_FindPrivateKeyFromCert(slot, cert, cbd->cms);
if (privkey == NULL) {
if (cbd->cert)
CERT_DestroyCertificate(cbd->cert);
PORT_SetError(0);
cbd->cert = CERT_DupCertificate(cert);
CERT_DestroyCertificate(cert);
return SECSuccess;
} else {
SECKEY_DestroyPrivateKey(privkey);
CERT_DestroyCertificate(cert);
}
return SECFailure;
}
Expand Down
7 changes: 7 additions & 0 deletions src/pesign.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,12 @@ main(int argc, char *argv[])
int check_vendor_cert = 1;

char *digest_name = "sha256";
char *orig_digest_name = digest_name;
char *tokenname = "NSS Certificate DB";
char *origtoken = tokenname;
char *certname = NULL;
char *certdir = "/etc/pki/pesign";
char *orig_certdir = certdir;
char *signum = NULL;

secuPWData pwdata;
Expand Down Expand Up @@ -351,6 +353,7 @@ main(int argc, char *argv[])
fprintf(stderr, "invalid signature number: %m\n");
exit(1);
}
free(signum);
}

int action = 0;
Expand Down Expand Up @@ -475,6 +478,8 @@ main(int argc, char *argv[])
}
if (certname)
free(certname);
if (digest_name && digest_name != orig_digest_name)
free(digest_name);


if (ctxp->sign) {
Expand Down Expand Up @@ -509,6 +514,8 @@ main(int argc, char *argv[])
break;
}
}
if (certdir && certdir != orig_certdir)
free(certdir);
pesign_context_free(ctxp);

if (!daemon) {
Expand Down

0 comments on commit e4af617

Please sign in to comment.