[Libreoffice-commits] core.git: filter/source

Caolán McNamara caolanm at redhat.com
Sun Aug 21 14:26:29 UTC 2016


 filter/source/xsltfilter/LibXSLTTransformer.cxx |    2 +-
 filter/source/xsltfilter/OleHandler.hxx         |   21 ++++++++++++++++++---
 2 files changed, 19 insertions(+), 4 deletions(-)

New commits:
commit 4b313d803279900f86992eb0aced91fb593e4355
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Aug 21 13:12:00 2016 +0100

    coverity#1371452 Wrapper object use after free
    
    have another stab at silencing that
    
    Change-Id: Ia3fe1c072bd8062a13991bbb2eca008264450138

diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
index 743a841..239a9a2 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.cxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx
@@ -298,7 +298,7 @@ namespace XSLT
         if (styleSheet)
         {
             m_tcontext = xsltNewTransformContext(styleSheet, doc);
-            m_tcontext->_private = static_cast<void *> (oh.get());
+            oh->registercontext(m_tcontext);
             xsltQuoteUserParams(m_tcontext, &params[0]);
             result = xsltApplyStylesheetUser(styleSheet, doc, nullptr, nullptr, nullptr,
                                              m_tcontext);
diff --git a/filter/source/xsltfilter/OleHandler.hxx b/filter/source/xsltfilter/OleHandler.hxx
index bf83d11..af8dac9 100644
--- a/filter/source/xsltfilter/OleHandler.hxx
+++ b/filter/source/xsltfilter/OleHandler.hxx
@@ -57,16 +57,30 @@ namespace XSLT
     class OleHandler
     {
     public:
-        OleHandler(const css::uno::Reference<XComponentContext>& rxContext){
-            m_xContext = rxContext;
+        OleHandler(const css::uno::Reference<XComponentContext>& rxContext)
+            : m_xContext(rxContext)
+            , m_tcontext(nullptr)
+        {
+        }
+        ~OleHandler()
+        {
+            if (m_tcontext)
+                m_tcontext->_private = nullptr;
         }
         void SAL_CALL          insertByName(const OUString& streamName, const OString& content);
         const OString SAL_CALL getByName(const OUString& streamName);
+        void registercontext(xsltTransformContextPtr context)
+        {
+            assert(context);
+            m_tcontext = context;
+            m_tcontext->_private = this;
+        }
 
     private:
         css::uno::Reference<XComponentContext> m_xContext;
         css::uno::Reference<XNameContainer> m_storage;
         css::uno::Reference<XStream> m_rootStream;
+        xsltTransformContextPtr m_tcontext;
 
         void SAL_CALL    ensureCreateRootStorage();
         OString SAL_CALL encodeSubStorage(const OUString& streamName);
@@ -76,5 +90,6 @@ namespace XSLT
     };
 }
 
-
 #endif // INCLUDED_FILTER_SOURCE_XSLTFILTER_OLEHANDLER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list