summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2023-11-14 02:42:42 +0100
committerRichard Levitte <levitte@openssl.org>2023-11-22 09:50:03 +0100
commit1ad7f4bf979fcb5fb50013b0c9106e26c6ed2fac (patch)
tree775d7d4e9d1a2941847a9fa244a79b43153c3bea
parent54e178640dee143742a11842469591dc315d5b5f (diff)
Fix possible memleak in PKCS7_add0_attrib_signing_time
When PKCS7_add_signed_attribute fails, the ASN1_TIME object may be leaked when it was not passed in as input parameter. Reviewed-by: Neil Horman <nhorman@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22772) (cherry picked from commit 7d52539f00144cb410c4e9d8da0b9574c0badb19)
-rw-r--r--crypto/pkcs7/pk7_attr.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/crypto/pkcs7/pk7_attr.c b/crypto/pkcs7/pk7_attr.c
index 72690c5e1b..a12d65bb8e 100644
--- a/crypto/pkcs7/pk7_attr.c
+++ b/crypto/pkcs7/pk7_attr.c
@@ -102,12 +102,18 @@ int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid)
int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t)
{
- if (t == NULL && (t = X509_gmtime_adj(NULL, 0)) == NULL) {
+ ASN1_TIME *tmp = NULL;
+
+ if (t == NULL && (tmp = t = X509_gmtime_adj(NULL, 0)) == NULL) {
ERR_raise(ERR_LIB_PKCS7, ERR_R_X509_LIB);
return 0;
}
- return PKCS7_add_signed_attribute(si, NID_pkcs9_signingTime,
- V_ASN1_UTCTIME, t);
+ if (!PKCS7_add_signed_attribute(si, NID_pkcs9_signingTime,
+ V_ASN1_UTCTIME, t)) {
+ ASN1_TIME_free(tmp);
+ return 0;
+ }
+ return 1;
}
int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,