diff --git a/src/ssl_ckch.c b/src/ssl_ckch.c index 61ffbc08f..1df6b967f 100644 --- a/src/ssl_ckch.c +++ b/src/ssl_ckch.c @@ -626,14 +626,16 @@ int ssl_sock_load_pem_into_ckch(const char *path, char *buf, struct cert_key_and while ((ca = PEM_read_bio_X509(in, NULL, NULL, NULL))) { if (chain == NULL) chain = sk_X509_new_null(); + if (ca == NULL) + break; if (!sk_X509_push(chain, ca)) { X509_free(ca); - goto end; + break; } } ret = ERR_get_error(); - if (ret && (ERR_GET_LIB(ret) != ERR_LIB_PEM && ERR_GET_REASON(ret) != PEM_R_NO_START_LINE)) { + if (ret && (ERR_GET_REASON(ret) != PEM_R_NO_START_LINE)) { memprintf(err, "%sunable to load certificate chain from file '%s': %s\n", err && *err ? *err : "", path, ERR_reason_error_string(ret)); goto end;