diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2022-09-07 21:50:24 +0300 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-09-08 08:25:17 +0200 |
commit | 467308d679a3f2b4bbdd117fcc73636d57d66c09 (patch) | |
tree | d7cb3c7870710966e8e875d8c1062de056a4031a | |
parent | eeca59964629f302802eeb03c4537fa6f7558a66 (diff) |
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 <vmiklos@collabora.com>
-rw-r--r-- | filter/source/pdf/pdffilter.cxx | 18 |
1 files changed, 14 insertions, 4 deletions
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 |