diff options
Diffstat (limited to 'xmlsecurity')
-rw-r--r-- | xmlsecurity/inc/certificatechooser.hxx | 1 | ||||
-rw-r--r-- | xmlsecurity/source/dialogs/certificatechooser.cxx | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/xmlsecurity/inc/certificatechooser.hxx b/xmlsecurity/inc/certificatechooser.hxx index 33458c27cd04..494ea40de1e4 100644 --- a/xmlsecurity/inc/certificatechooser.hxx +++ b/xmlsecurity/inc/certificatechooser.hxx @@ -51,6 +51,7 @@ class CertificateChooser final : public weld::GenericDialogController { private: std::vector< css::uno::Reference< css::xml::crypto::XXMLSecurityContext > > mxSecurityContexts; + std::vector<std::shared_ptr<CertificateChooserUserData>> mvUserData; bool mbInitialized; CertificateChooserUserAction const meAction; diff --git a/xmlsecurity/source/dialogs/certificatechooser.cxx b/xmlsecurity/source/dialogs/certificatechooser.cxx index 2bae90cd7d70..c95ad1947d0b 100644 --- a/xmlsecurity/source/dialogs/certificatechooser.cxx +++ b/xmlsecurity/source/dialogs/certificatechooser.cxx @@ -217,6 +217,9 @@ void CertificateChooser::ImplInitialize(bool mbSearch) userData->xSecurityContext = secContext; userData->xSecurityEnvironment = secEnvironment; + // Needed to keep userData alive. (reference to shared_ptr prevents delete) + mvUserData.push_back(userData); + OUString sIssuer = xmlsec::GetContentPart( xCert->getIssuerName(), xCert->getCertificateKind()); OUString sExpDate = utl::GetDateString(xCert->getNotValidAfter()); |