summaryrefslogtreecommitdiff
path: root/xmlsecurity
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2018-09-27 08:55:07 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-09-27 12:15:02 +0200
commit27a2de0bd3f1cf64b9ad3a84b112968941ce6d8e (patch)
tree6d6537f2797d678a1bef17aa054fc30880abe8f6 /xmlsecurity
parentd71859ed79eef8d0d76ea93530fe708b0effdc80 (diff)
xmlsecurity nss: avoid deleting the keys manager manually
Change-Id: I53a88116148db9e1ceac4024781516173c3d4666 Reviewed-on: https://gerrit.libreoffice.org/61021 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins
Diffstat (limited to 'xmlsecurity')
-rw-r--r--xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx25
1 files changed, 13 insertions, 12 deletions
diff --git a/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
index f4b1364f52dd..5eaec91e6ecc 100644
--- a/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
+++ b/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
@@ -29,6 +29,7 @@
#include <xmlsec-wrapper.h>
#include <com/sun/star/xml/crypto/XXMLSignature.hpp>
+#include <memory>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno ;
@@ -44,6 +45,14 @@ using ::com::sun::star::xml::crypto::XXMLSignatureTemplate ;
using ::com::sun::star::xml::crypto::XXMLSecurityContext ;
using ::com::sun::star::xml::crypto::XUriBinding ;
+namespace std
+{
+template <> struct default_delete<xmlSecKeysMngr>
+{
+ void operator()(xmlSecKeysMngrPtr ptr) { SecurityEnvironment_NssImpl::destroyKeysManager(ptr); }
+};
+}
+
class XMLSignature_NssImpl
: public ::cppu::WeakImplHelper<xml::crypto::XXMLSignature, lang::XServiceInfo>
{
@@ -77,7 +86,6 @@ SAL_CALL XMLSignature_NssImpl::generate(
const Reference< XSecurityEnvironment >& aEnvironment
)
{
- xmlSecKeysMngrPtr pMngr = nullptr ;
xmlSecDSigCtxPtr pDsigCtx = nullptr ;
xmlNodePtr pNode = nullptr ;
@@ -126,16 +134,15 @@ SAL_CALL XMLSignature_NssImpl::generate(
setErrorRecorder();
- pMngr = pSecEnv->createKeysManager();
+ std::unique_ptr<xmlSecKeysMngr> pMngr(pSecEnv->createKeysManager());
if( !pMngr ) {
throw RuntimeException() ;
}
//Create Signature context
- pDsigCtx = xmlSecDSigCtxCreate( pMngr ) ;
+ pDsigCtx = xmlSecDSigCtxCreate(pMngr.get());
if( pDsigCtx == nullptr )
{
- SecurityEnvironment_NssImpl::destroyKeysManager( pMngr );
//throw XMLSignatureException() ;
clearErrorRecorder();
return aTemplate;
@@ -156,7 +163,6 @@ SAL_CALL XMLSignature_NssImpl::generate(
xmlSecDSigCtxDestroy( pDsigCtx ) ;
- SecurityEnvironment_NssImpl::destroyKeysManager( pMngr );
//Unregistered the stream/URI binding
if( xUriBinding.is() )
@@ -172,7 +178,6 @@ SAL_CALL XMLSignature_NssImpl::validate(
const Reference< XXMLSignatureTemplate >& aTemplate ,
const Reference< XXMLSecurityContext >& aSecurityCtx
) {
- xmlSecKeysMngrPtr pMngr = nullptr ;
xmlSecDSigCtxPtr pDsigCtx = nullptr ;
xmlNodePtr pNode = nullptr ;
//sal_Bool valid ;
@@ -224,17 +229,15 @@ SAL_CALL XMLSignature_NssImpl::validate(
if( pSecEnv == nullptr )
throw RuntimeException() ;
- pMngr = pSecEnv->createKeysManager();
+ std::unique_ptr<xmlSecKeysMngr> pMngr(pSecEnv->createKeysManager());
if( !pMngr ) {
throw RuntimeException() ;
}
//Create Signature context
- pDsigCtx = xmlSecDSigCtxCreate( pMngr ) ;
+ pDsigCtx = xmlSecDSigCtxCreate(pMngr.get());
if( pDsigCtx == nullptr )
{
- SecurityEnvironment_NssImpl::destroyKeysManager( pMngr );
- //throw XMLSignatureException() ;
clearErrorRecorder();
return aTemplate;
}
@@ -263,7 +266,6 @@ SAL_CALL XMLSignature_NssImpl::validate(
{
aTemplate->setStatus(css::xml::crypto::SecurityOperationStatus_OPERATION_SUCCEEDED);
xmlSecDSigCtxDestroy( pDsigCtx ) ;
- SecurityEnvironment_NssImpl::destroyKeysManager( pMngr );
break;
}
else
@@ -271,7 +273,6 @@ SAL_CALL XMLSignature_NssImpl::validate(
aTemplate->setStatus(css::xml::crypto::SecurityOperationStatus_UNKNOWN);
}
xmlSecDSigCtxDestroy( pDsigCtx ) ;
- SecurityEnvironment_NssImpl::destroyKeysManager( pMngr );
}