diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2018-10-15 10:14:04 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-11-08 14:55:18 +0100 |
commit | 641f71239f1d09272e8dbc93bb20fda88b57112d (patch) | |
tree | 2c61008002175f2e7ecfb7a64e2cdb1824363766 | |
parent | 11394fd76d4c5253afcb8e26ebd2de327111234d (diff) |
xmlsecurity: prevent seg. fault if there is no private key
Change-Id: I8c6917c63bbdcf0d9bb2eb1c89745186feb263f8
Reviewed-on: https://gerrit.libreoffice.org/61781
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
(cherry picked from commit 2077c5e4e10a8254206945520f084e6216464d6a)
-rw-r--r-- | xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx index 380ae4d4ee40..3ba0062e86b4 100644 --- a/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx +++ b/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx @@ -945,11 +945,18 @@ xmlSecKeysMngrPtr SecurityEnvironment_NssImpl::createKeysManager() { { if (auto pCERTCertificate = const_cast<CERTCertificate*>(pCertificate->getNssCert())) { - SECKEYPrivateKey* pPrivateKey = PK11_FindPrivateKeyFromCert(pCERTCertificate->slot, pCERTCertificate, nullptr); - xmlSecKeyDataPtr pKeyData = xmlSecNssPKIAdoptKey(pPrivateKey, nullptr); - xmlSecKeyPtr pKey = xmlSecKeyCreate(); - xmlSecKeySetValue(pKey, pKeyData); - xmlSecNssAppDefaultKeysMngrAdoptKey(pKeysMngr, pKey); + if (pCERTCertificate && pCERTCertificate->slot) + { + SECKEYPrivateKey* pPrivateKey = PK11_FindPrivateKeyFromCert(pCERTCertificate->slot, pCERTCertificate, nullptr); + xmlSecKeyDataPtr pKeyData = xmlSecNssPKIAdoptKey(pPrivateKey, nullptr); + xmlSecKeyPtr pKey = xmlSecKeyCreate(); + xmlSecKeySetValue(pKey, pKeyData); + xmlSecNssAppDefaultKeysMngrAdoptKey(pKeysMngr, pKey); + } + else + { + SAL_WARN("xmlsecurity.xmlsec", "Can't get the private key from the certificate."); + } } } |