diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-21 09:34:10 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-22 10:16:20 +0200 |
commit | bebb1a3f2dc3e131f95a078f8a9c40d0491af7cd (patch) | |
tree | c8a31e7719e8e1609f4b1d94372b358c2cc6c16d /xmlsecurity | |
parent | 88c85c8aa377ccc017582d8a08e5f73391b5a446 (diff) |
pass SvXMLNamespaceMap around by value
in SvXMLImport.
Remove an assert in XSecParser because std::move on std::optional
does not make the optional empty, unlike it's effect on std::unique_ptr.
Change-Id: Ie94d01423bf694a37e4bd7f2c0235c5f79a44efe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119302
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'xmlsecurity')
-rw-r--r-- | xmlsecurity/source/helper/ooxmlsecparser.cxx | 117 | ||||
-rw-r--r-- | xmlsecurity/source/helper/ooxmlsecparser.hxx | 3 | ||||
-rw-r--r-- | xmlsecurity/source/helper/xsecparser.cxx | 141 | ||||
-rw-r--r-- | xmlsecurity/source/helper/xsecparser.hxx | 3 |
4 files changed, 132 insertions, 132 deletions
diff --git a/xmlsecurity/source/helper/ooxmlsecparser.cxx b/xmlsecurity/source/helper/ooxmlsecparser.cxx index c88c4efbbe69..a25c7ecffa01 100644 --- a/xmlsecurity/source/helper/ooxmlsecparser.cxx +++ b/xmlsecurity/source/helper/ooxmlsecparser.cxx @@ -28,11 +28,11 @@ class OOXMLSecParser::Context friend class OOXMLSecParser; OOXMLSecParser & m_rParser; private: - std::unique_ptr<SvXMLNamespaceMap> m_pOldNamespaceMap; + std::optional<SvXMLNamespaceMap> m_pOldNamespaceMap; public: Context(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : m_rParser(rParser) , m_pOldNamespaceMap(std::move(pOldNamespaceMap)) { @@ -50,7 +50,7 @@ class OOXMLSecParser::Context } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const /*nNamespace*/, OUString const& /*rName*/); virtual void Characters(OUString const& /*rChars*/) @@ -67,7 +67,7 @@ class OOXMLSecParser::UnknownContext { public: UnknownContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -80,7 +80,7 @@ class OOXMLSecParser::UnknownContext }; auto OOXMLSecParser::Context::CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const /*nNamespace*/, OUString const& /*rName*/) -> std::unique_ptr<Context> { @@ -106,7 +106,7 @@ class OOXMLSecParser::ReferencedContextImpl public: ReferencedContextImpl(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_isReferenced(isReferenced) @@ -132,7 +132,7 @@ class OOXMLSecParser::DsX509CertificateContext public: DsX509CertificateContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -153,7 +153,7 @@ class OOXMLSecParser::DsX509SerialNumberContext public: DsX509SerialNumberContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -174,7 +174,7 @@ class OOXMLSecParser::DsX509IssuerNameContext public: DsX509IssuerNameContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -196,7 +196,7 @@ class OOXMLSecParser::DsX509IssuerSerialContext public: DsX509IssuerSerialContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rIssuerName, OUString & rSerialNumber) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rX509IssuerName(rIssuerName) @@ -205,7 +205,7 @@ class OOXMLSecParser::DsX509IssuerSerialContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "X509IssuerName") @@ -233,7 +233,7 @@ class OOXMLSecParser::DsX509DataContext public: DsX509DataContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -244,7 +244,7 @@ class OOXMLSecParser::DsX509DataContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "X509IssuerSerial") @@ -267,7 +267,7 @@ class OOXMLSecParser::DsKeyInfoContext { public: DsKeyInfoContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -279,7 +279,7 @@ class OOXMLSecParser::DsKeyInfoContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "X509Data") @@ -303,7 +303,7 @@ class OOXMLSecParser::DsSignatureValueContext public: DsSignatureValueContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -333,7 +333,7 @@ class OOXMLSecParser::DsDigestValueContext public: DsDigestValueContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -360,7 +360,7 @@ class OOXMLSecParser::DsDigestMethodContext public: DsDigestMethodContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_Int32 & rReferenceDigestID) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rReferenceDigestID(rReferenceDigestID) @@ -399,7 +399,7 @@ class OOXMLSecParser::DsTransformContext public: DsTransformContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool & rIsC14N) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rIsC14N(rIsC14N) @@ -426,7 +426,7 @@ class OOXMLSecParser::DsTransformsContext public: DsTransformsContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool & rIsC14N) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rIsC14N(rIsC14N) @@ -434,7 +434,7 @@ class OOXMLSecParser::DsTransformsContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "Transform") @@ -459,7 +459,7 @@ class OOXMLSecParser::DsReferenceContext public: DsReferenceContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -503,7 +503,7 @@ class OOXMLSecParser::DsReferenceContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "Transforms") @@ -527,7 +527,7 @@ class OOXMLSecParser::DsSignatureMethodContext { public: DsSignatureMethodContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -549,7 +549,7 @@ class OOXMLSecParser::DsSignedInfoContext { public: DsSignedInfoContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -566,7 +566,7 @@ class OOXMLSecParser::DsSignedInfoContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignatureMethod") @@ -591,7 +591,7 @@ class OOXMLSecParser::XadesCertDigestContext public: XadesCertDigestContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rDigestValue, sal_Int32 & rReferenceDigestID) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rDigestValue(rDigestValue) @@ -600,7 +600,7 @@ class OOXMLSecParser::XadesCertDigestContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "DigestMethod") @@ -626,7 +626,7 @@ class OOXMLSecParser::XadesCertContext public: XadesCertContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -645,7 +645,7 @@ class OOXMLSecParser::XadesCertContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "CertDigest") @@ -665,14 +665,14 @@ class OOXMLSecParser::XadesSigningCertificateContext { public: XadesSigningCertificateContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "Cert") @@ -691,7 +691,7 @@ class OOXMLSecParser::XadesSigningTimeContext public: XadesSigningTimeContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -720,7 +720,7 @@ class OOXMLSecParser::XadesSignedSignaturePropertiesContext { public: XadesSignedSignaturePropertiesContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -733,7 +733,7 @@ class OOXMLSecParser::XadesSignedSignaturePropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "SigningTime") @@ -754,7 +754,7 @@ class OOXMLSecParser::XadesSignedPropertiesContext { public: XadesSignedPropertiesContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -767,7 +767,7 @@ class OOXMLSecParser::XadesSignedPropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "SignedSignatureProperties") @@ -784,7 +784,7 @@ class OOXMLSecParser::XadesQualifyingPropertiesContext { public: XadesQualifyingPropertiesContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -797,7 +797,7 @@ class OOXMLSecParser::XadesQualifyingPropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "SignedProperties") @@ -817,7 +817,7 @@ class OOXMLSecParser::MsodigsigSetupIDContext public: MsodigsigSetupIDContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -838,7 +838,7 @@ class OOXMLSecParser::MsodigsigSignatureCommentsContext public: MsodigsigSignatureCommentsContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -860,7 +860,7 @@ class OOXMLSecParser::MsodigsigSignatureInfoV1Context public: MsodigsigSignatureInfoV1Context(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -873,7 +873,7 @@ class OOXMLSecParser::MsodigsigSignatureInfoV1Context } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_MSODIGSIG && rName == "SetupID") @@ -916,7 +916,7 @@ class OOXMLSecParser::MdssiValueContext public: MdssiValueContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -937,7 +937,7 @@ class OOXMLSecParser::MdssiSignatureTimeContext public: MdssiSignatureTimeContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -945,7 +945,7 @@ class OOXMLSecParser::MdssiSignatureTimeContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_MDSSI && rName == "Value") @@ -968,7 +968,7 @@ class OOXMLSecParser::DsSignaturePropertyContext public: DsSignaturePropertyContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1003,7 +1003,7 @@ class OOXMLSecParser::DsSignaturePropertyContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_MDSSI && rName == "SignatureTime") @@ -1024,7 +1024,7 @@ class OOXMLSecParser::DsSignaturePropertiesContext { public: DsSignaturePropertiesContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1037,7 +1037,7 @@ class OOXMLSecParser::DsSignaturePropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignatureProperty") @@ -1053,7 +1053,7 @@ class OOXMLSecParser::DsManifestContext { public: DsManifestContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1074,7 +1074,7 @@ class OOXMLSecParser::DsManifestContext #endif virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "Reference") @@ -1095,7 +1095,7 @@ class OOXMLSecParser::DsObjectContext public: DsObjectContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) // init with "false" here - the Signature element can't be referenced by its child : OOXMLSecParser::ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), false) { @@ -1150,7 +1150,7 @@ class OOXMLSecParser::DsObjectContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignatureProperties") @@ -1174,7 +1174,7 @@ class OOXMLSecParser::DsSignatureContext { public: DsSignatureContext(OOXMLSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : OOXMLSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -1192,7 +1192,7 @@ class OOXMLSecParser::DsSignatureContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignedInfo") @@ -1217,7 +1217,7 @@ class OOXMLSecParser::DsSignatureContext OOXMLSecParser::OOXMLSecParser(XMLSignatureHelper& rXMLSignatureHelper, XSecController* pXSecController) - : m_pNamespaceMap(new SvXMLNamespaceMap) + : m_pNamespaceMap(SvXMLNamespaceMap()) , m_pXSecController(pXSecController) ,m_rXMLSignatureHelper(rXMLSignatureHelper) { @@ -1262,7 +1262,7 @@ void SAL_CALL OOXMLSecParser::endDocument() void SAL_CALL OOXMLSecParser::startElement(const OUString& rName, const uno::Reference<xml::sax::XAttributeList>& xAttribs) { assert(m_pNamespaceMap); - std::unique_ptr<SvXMLNamespaceMap> pRewindMap( + std::optional<SvXMLNamespaceMap> pRewindMap( SvXMLImport::processNSAttributes(m_pNamespaceMap, nullptr, xAttribs)); OUString localName; @@ -1291,7 +1291,6 @@ void SAL_CALL OOXMLSecParser::startElement(const OUString& rName, const uno::Ref } m_ContextStack.push(std::move(pContext)); - assert(!pRewindMap); m_ContextStack.top()->StartElement(xAttribs); diff --git a/xmlsecurity/source/helper/ooxmlsecparser.hxx b/xmlsecurity/source/helper/ooxmlsecparser.hxx index 4f11302ff765..9d0c7efe470d 100644 --- a/xmlsecurity/source/helper/ooxmlsecparser.hxx +++ b/xmlsecurity/source/helper/ooxmlsecparser.hxx @@ -16,6 +16,7 @@ #include <xmloff/namespacemap.hxx> +#include <optional> #include <stack> class XSecController; @@ -71,7 +72,7 @@ private: class DsigSignaturesContext; std::stack<std::unique_ptr<Context>> m_ContextStack; - std::unique_ptr<SvXMLNamespaceMap> m_pNamespaceMap; + std::optional<SvXMLNamespaceMap> m_pNamespaceMap; XSecController* m_pXSecController; css::uno::Reference<css::xml::sax::XDocumentHandler> m_xNextHandler; diff --git a/xmlsecurity/source/helper/xsecparser.cxx b/xmlsecurity/source/helper/xsecparser.cxx index d191c540ce8f..f12e7031e349 100644 --- a/xmlsecurity/source/helper/xsecparser.cxx +++ b/xmlsecurity/source/helper/xsecparser.cxx @@ -36,11 +36,11 @@ class XSecParser::Context friend class XSecParser; XSecParser & m_rParser; private: - std::unique_ptr<SvXMLNamespaceMap> m_pOldNamespaceMap; + std::optional<SvXMLNamespaceMap> m_pOldNamespaceMap; public: Context(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : m_rParser(rParser) , m_pOldNamespaceMap(std::move(pOldNamespaceMap)) { @@ -58,7 +58,7 @@ class XSecParser::Context } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const /*nNamespace*/, OUString const& /*rName*/); virtual void Characters(OUString const& /*rChars*/) @@ -75,7 +75,7 @@ class XSecParser::UnknownContext { public: UnknownContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -88,7 +88,7 @@ class XSecParser::UnknownContext }; auto XSecParser::Context::CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const /*nNamespace*/, OUString const& /*rName*/) -> std::unique_ptr<Context> { @@ -114,7 +114,7 @@ class XSecParser::ReferencedContextImpl public: ReferencedContextImpl(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_isReferenced(isReferenced) @@ -140,7 +140,7 @@ class XSecParser::LoPGPOwnerContext public: LoPGPOwnerContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -164,7 +164,7 @@ class XSecParser::DsPGPKeyPacketContext public: DsPGPKeyPacketContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -188,7 +188,7 @@ class XSecParser::DsPGPKeyIDContext public: DsPGPKeyIDContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -209,7 +209,7 @@ class XSecParser::DsPGPDataContext { public: DsPGPDataContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -221,7 +221,7 @@ class XSecParser::DsPGPDataContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "PGPKeyID") @@ -248,7 +248,7 @@ class XSecParser::DsX509CertificateContext public: DsX509CertificateContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -269,7 +269,7 @@ class XSecParser::DsX509SerialNumberContext public: DsX509SerialNumberContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -290,7 +290,7 @@ class XSecParser::DsX509IssuerNameContext public: DsX509IssuerNameContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -312,7 +312,7 @@ class XSecParser::DsX509IssuerSerialContext public: DsX509IssuerSerialContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rIssuerName, OUString & rSerialNumber) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rX509IssuerName(rIssuerName) @@ -321,7 +321,7 @@ class XSecParser::DsX509IssuerSerialContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "X509IssuerName") @@ -349,7 +349,7 @@ class XSecParser::DsX509DataContext public: DsX509DataContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -360,7 +360,7 @@ class XSecParser::DsX509DataContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "X509IssuerSerial") @@ -383,7 +383,7 @@ class XSecParser::DsKeyInfoContext { public: DsKeyInfoContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -395,7 +395,7 @@ class XSecParser::DsKeyInfoContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "X509Data") @@ -422,7 +422,7 @@ class XSecParser::DsSignatureValueContext public: DsSignatureValueContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -452,7 +452,7 @@ class XSecParser::DsDigestValueContext public: DsDigestValueContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -479,7 +479,7 @@ class XSecParser::DsDigestMethodContext public: DsDigestMethodContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_Int32 & rReferenceDigestID) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rReferenceDigestID(rReferenceDigestID) @@ -518,7 +518,7 @@ class XSecParser::DsTransformContext public: DsTransformContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool & rIsC14N) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rIsC14N(rIsC14N) @@ -548,7 +548,7 @@ class XSecParser::DsTransformsContext public: DsTransformsContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool & rIsC14N) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rIsC14N(rIsC14N) @@ -556,7 +556,7 @@ class XSecParser::DsTransformsContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "Transform") @@ -581,7 +581,7 @@ class XSecParser::DsReferenceContext public: DsReferenceContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -625,7 +625,7 @@ class XSecParser::DsReferenceContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "Transforms") @@ -649,7 +649,7 @@ class XSecParser::DsSignatureMethodContext { public: DsSignatureMethodContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -671,7 +671,7 @@ class XSecParser::DsSignedInfoContext { public: DsSignedInfoContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -688,7 +688,7 @@ class XSecParser::DsSignedInfoContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignatureMethod") @@ -712,7 +712,7 @@ class XSecParser::XadesEncapsulatedX509CertificateContext public: XadesEncapsulatedX509CertificateContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -739,7 +739,7 @@ class XSecParser::XadesCertificateValuesContext { public: XadesCertificateValuesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -751,7 +751,7 @@ class XSecParser::XadesCertificateValuesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "EncapsulatedX509Certificate") @@ -768,7 +768,7 @@ class XSecParser::XadesUnsignedSignaturePropertiesContext { public: XadesUnsignedSignaturePropertiesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -780,7 +780,7 @@ class XSecParser::XadesUnsignedSignaturePropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "CertificateValues") @@ -811,7 +811,7 @@ class XSecParser::XadesUnsignedPropertiesContext { public: XadesUnsignedPropertiesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -823,7 +823,7 @@ class XSecParser::XadesUnsignedPropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "UnsignedSignatureProperties") @@ -843,7 +843,7 @@ class XSecParser::LoSignatureLineIdContext public: LoSignatureLineIdContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -875,7 +875,7 @@ class XSecParser::LoSignatureLineValidImageContext public: LoSignatureLineValidImageContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -907,7 +907,7 @@ class XSecParser::LoSignatureLineInvalidImageContext public: LoSignatureLineInvalidImageContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -936,14 +936,14 @@ class XSecParser::LoSignatureLineContext { public: LoSignatureLineContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_LO_EXT && rName == "SignatureLineId") @@ -971,7 +971,7 @@ class XSecParser::XadesCertDigestContext public: XadesCertDigestContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rDigestValue, sal_Int32 & rReferenceDigestID) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rDigestValue(rDigestValue) @@ -980,7 +980,7 @@ class XSecParser::XadesCertDigestContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "DigestMethod") @@ -1006,7 +1006,7 @@ class XSecParser::XadesCertContext public: XadesCertContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1025,7 +1025,7 @@ class XSecParser::XadesCertContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "CertDigest") @@ -1045,14 +1045,14 @@ class XSecParser::XadesSigningCertificateContext { public: XadesSigningCertificateContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "Cert") @@ -1071,7 +1071,7 @@ class XSecParser::XadesSigningTimeContext public: XadesSigningTimeContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1100,7 +1100,7 @@ class XSecParser::XadesSignedSignaturePropertiesContext { public: XadesSignedSignaturePropertiesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1113,7 +1113,7 @@ class XSecParser::XadesSignedSignaturePropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "SigningTime") @@ -1138,7 +1138,7 @@ class XSecParser::XadesSignedPropertiesContext { public: XadesSignedPropertiesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1151,7 +1151,7 @@ class XSecParser::XadesSignedPropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "SignedSignatureProperties") @@ -1168,7 +1168,7 @@ class XSecParser::XadesQualifyingPropertiesContext { public: XadesQualifyingPropertiesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1181,7 +1181,7 @@ class XSecParser::XadesQualifyingPropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_XADES132 && rName == "SignedProperties") @@ -1204,7 +1204,7 @@ class XSecParser::DcDateContext public: DcDateContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -1225,7 +1225,7 @@ class XSecParser::DcDescriptionContext public: DcDescriptionContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, OUString & rValue) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) , m_rValue(rValue) @@ -1249,7 +1249,7 @@ class XSecParser::DsSignaturePropertyContext public: DsSignaturePropertyContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1285,7 +1285,7 @@ class XSecParser::DsSignaturePropertyContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DC && rName == "date") @@ -1307,7 +1307,7 @@ class XSecParser::DsSignaturePropertiesContext { public: DsSignaturePropertiesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, bool const isReferenced) : ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), isReferenced) { @@ -1320,7 +1320,7 @@ class XSecParser::DsSignaturePropertiesContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignatureProperty") @@ -1336,7 +1336,7 @@ class XSecParser::DsObjectContext { public: DsObjectContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) // init with "false" here - the Signature element can't be referenced by its child : XSecParser::ReferencedContextImpl(rParser, std::move(pOldNamespaceMap), false) { @@ -1349,7 +1349,7 @@ class XSecParser::DsObjectContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignatureProperties") @@ -1370,7 +1370,7 @@ class XSecParser::DsSignatureContext { public: DsSignatureContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } @@ -1388,7 +1388,7 @@ class XSecParser::DsSignatureContext } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "SignedInfo") @@ -1416,13 +1416,13 @@ class XSecParser::DsigSignaturesContext { public: DsigSignaturesContext(XSecParser & rParser, - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap) + std::optional<SvXMLNamespaceMap> pOldNamespaceMap) : XSecParser::Context(rParser, std::move(pOldNamespaceMap)) { } virtual std::unique_ptr<Context> CreateChildContext( - std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap, + std::optional<SvXMLNamespaceMap> pOldNamespaceMap, sal_uInt16 const nNamespace, OUString const& rName) override { if (nNamespace == XML_NAMESPACE_DS && rName == "Signature") @@ -1436,7 +1436,7 @@ class XSecParser::DsigSignaturesContext XSecParser::XSecParser(XMLSignatureHelper& rXMLSignatureHelper, XSecController* pXSecController) - : m_pNamespaceMap(new SvXMLNamespaceMap) + : m_pNamespaceMap(SvXMLNamespaceMap()) , m_pXSecController(pXSecController) , m_rXMLSignatureHelper(rXMLSignatureHelper) { @@ -1498,7 +1498,7 @@ void SAL_CALL XSecParser::startElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttribs ) { assert(m_pNamespaceMap); - std::unique_ptr<SvXMLNamespaceMap> pRewindMap( + std::optional<SvXMLNamespaceMap> pRewindMap( SvXMLImport::processNSAttributes(m_pNamespaceMap, nullptr, xAttribs)); OUString localName; @@ -1527,7 +1527,6 @@ void SAL_CALL XSecParser::startElement( } m_ContextStack.push(std::move(pContext)); - assert(!pRewindMap); try { diff --git a/xmlsecurity/source/helper/xsecparser.hxx b/xmlsecurity/source/helper/xsecparser.hxx index 86f6154ddc93..fa2d4a8bc4ab 100644 --- a/xmlsecurity/source/helper/xsecparser.hxx +++ b/xmlsecurity/source/helper/xsecparser.hxx @@ -26,6 +26,7 @@ #include <xmloff/namespacemap.hxx> +#include <optional> #include <stack> class XMLSignatureHelper; @@ -98,7 +99,7 @@ private: class DsigSignaturesContext; std::stack<std::unique_ptr<Context>> m_ContextStack; - std::unique_ptr<SvXMLNamespaceMap> m_pNamespaceMap; + std::optional<SvXMLNamespaceMap> m_pNamespaceMap; /* * the XSecController collaborating with XSecParser |