diff options
Diffstat (limited to 'apps/lib')
| -rw-r--r-- | apps/lib/apps.c | 15 | ||||
| -rw-r--r-- | apps/lib/cmp_mock_srv.c | 4 |
2 files changed, 14 insertions, 5 deletions
diff --git a/apps/lib/apps.c b/apps/lib/apps.c index bc2e1c123a75..e5a2b162b4ef 100644 --- a/apps/lib/apps.c +++ b/apps/lib/apps.c @@ -1057,9 +1057,12 @@ int load_key_certs_crls(const char *uri, int format, int maybe_stdin, if (ok) pcert = NULL; } else if (pcerts != NULL) { - ok = X509_add_cert(*pcerts, - OSSL_STORE_INFO_get1_CERT(info), - X509_ADD_FLAG_DEFAULT); + X509 *cert = OSSL_STORE_INFO_get1_CERT(info); + + ok = cert != NULL + && X509_add_cert(*pcerts, cert, X509_ADD_FLAG_DEFAULT); + if (!ok) + X509_free(cert); } ncerts += ok; break; @@ -1069,7 +1072,11 @@ int load_key_certs_crls(const char *uri, int format, int maybe_stdin, if (ok) pcrl = NULL; } else if (pcrls != NULL) { - ok = sk_X509_CRL_push(*pcrls, OSSL_STORE_INFO_get1_CRL(info)); + X509_CRL *crl = OSSL_STORE_INFO_get1_CRL(info); + + ok = crl != NULL && sk_X509_CRL_push(*pcrls, crl); + if (!ok) + X509_CRL_free(crl); } ncrls += ok; break; diff --git a/apps/lib/cmp_mock_srv.c b/apps/lib/cmp_mock_srv.c index cf21e8277887..09b69ff4cf59 100644 --- a/apps/lib/cmp_mock_srv.c +++ b/apps/lib/cmp_mock_srv.c @@ -345,6 +345,7 @@ static OSSL_CMP_PKISI *process_cert_request(OSSL_CMP_SRV_CTX *srv_ctx, STACK_OF(ASN1_UTF8STRING) *strs; ASN1_UTF8STRING *str; const char *data; + int len; if (OBJ_obj2nid(obj) == NID_id_it_certProfile) { if (!OSSL_CMP_ITAV_get0_certProfile(itav, &strs)) @@ -359,7 +360,8 @@ static OSSL_CMP_PKISI *process_cert_request(OSSL_CMP_SRV_CTX *srv_ctx, ERR_raise(ERR_LIB_CMP, ERR_R_PASSED_INVALID_ARGUMENT); return NULL; } - if (strcmp(data, "profile1") != 0) { + if (((len = ASN1_STRING_length(str)) != (int)sizeof("profile1") - 1) + || memcmp(data, "profile1", len) != 0) { ERR_raise(ERR_LIB_CMP, CMP_R_UNEXPECTED_CERTPROFILE); return NULL; } |
