diff options
author | Sune Vuorela <sune@vuorela.dk> | 2023-06-05 11:09:09 +0200 |
---|---|---|
committer | Sune Vuorela <sune@vuorela.dk> | 2023-06-05 11:09:13 +0200 |
commit | fa00b3fbbd62c5b6b5383d9997a9d5c30827b386 (patch) | |
tree | b45197ac6e7e48a8e4c2ddd545d7d06ace8989df | |
parent | c002bee1f2010d13c85a46e6816920ecdccb3015 (diff) |
Fix cornercase crash in weird pdfsig setups
This fixes a potential crash in setups where at least one cryptographic
signature backend is compiled in, but none is functional.
-rw-r--r-- | utils/pdfsig.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/utils/pdfsig.cc b/utils/pdfsig.cc index b78169d8..0baf0d09 100644 --- a/utils/pdfsig.cc +++ b/utils/pdfsig.cc @@ -202,7 +202,13 @@ static std::vector<std::unique_ptr<X509CertificateInfo>> getAvailableSigningCert } }; NSSSignatureConfiguration::setNSSPasswordCallback(passwordCallback); - std::vector<std::unique_ptr<X509CertificateInfo>> vCerts = CryptoSign::Factory::createActive()->getAvailableSigningCertificates(); + auto backend = CryptoSign::Factory::createActive(); + if (!backend) { + *error = true; + printf("No backends for cryptographic signatures available"); + return {}; + } + std::vector<std::unique_ptr<X509CertificateInfo>> vCerts = backend->getAvailableSigningCertificates(); NSSSignatureConfiguration::setNSSPasswordCallback({}); if (passwordNeeded) { *error = true; |