filter/source/pdf/pdffilter.cxx |   18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

New commits:
commit 467308d679a3f2b4bbdd117fcc73636d57d66c09
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Sep 7 21:50:24 2022 +0300
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Sep 8 08:25:17 2022 +0200

    tdf#150846: FilterOptions in descriptor could come from import filter
    
    Tolerate failure parsing json here. Unfortunately this means that
    we can't provide a diagnostics to user when they provide bad json
    in the command line parameters.
    
    Change-Id: Ia3fa18e709a4c0b891faf4365453b79e6c58a9c6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139613
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/filter/source/pdf/pdffilter.cxx b/filter/source/pdf/pdffilter.cxx
index d7fc558d198e..f12559bfe3df 100644
--- a/filter/source/pdf/pdffilter.cxx
+++ b/filter/source/pdf/pdffilter.cxx
@@ -33,6 +33,8 @@
 #include <comphelper/propertysequence.hxx>
 #include <comphelper/sequence.hxx>
 
+#include <boost/property_tree/json_parser/error.hpp>
+
 using namespace ::com::sun::star::io;
 
 PDFFilter::PDFFilter( const Reference< XComponentContext > &rxContext ) :
@@ -78,11 +80,19 @@ bool PDFFilter::implExport( const Sequence< PropertyValue 
>& rDescriptor )
             pValue[i].Value >>= bIsRedactMode;
     }
 
-    if (!aFilterData.hasElements() && !aFilterOptions.isEmpty())
+    if (!aFilterData.hasElements() && aFilterOptions.startsWith("{"))
     {
-        // Allow setting filter data keys from the cmdline.
-        std::vector<PropertyValue> aData = 
comphelper::JsonToPropertyValues(aFilterOptions.toUtf8());
-        aFilterData = comphelper::containerToSequence(aData);
+        try
+        {
+            // Allow setting filter data keys from the cmdline.
+            std::vector<PropertyValue> aData
+                = comphelper::JsonToPropertyValues(aFilterOptions.toUtf8());
+            aFilterData = comphelper::containerToSequence(aData);
+        }
+        catch (const boost::property_tree::json_parser::json_parser_error&)
+        {
+            // This wasn't a valid json; maybe came from import filter 
(tdf#150846)
+        }
     }
 
     /* we don't get FilterData if we are exporting directly

Reply via email to