From ee7824cf28536b8acf5f47aa76ced348df5f6d35 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 22 Jan 2022 17:53:57 -0500 Subject: [PATCH] QPDFJob: convert encryption_file args to shared pointers --- include/qpdf/QPDFJob.hh | 4 ++-- libqpdf/QPDFJob.cc | 8 ++++---- libqpdf/QPDFJob_argv.cc | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/qpdf/QPDFJob.hh b/include/qpdf/QPDFJob.hh index 86ee470c..ddfab269 100644 --- a/include/qpdf/QPDFJob.hh +++ b/include/qpdf/QPDFJob.hh @@ -208,8 +208,8 @@ class QPDFJob bool suppress_warnings; bool warnings_exit_zero; bool copy_encryption; - char const* encryption_file; - char const* encryption_file_password; + std::string encryption_file; + std::shared_ptr encryption_file_password; bool encrypt; bool password_is_hex_key; bool suppress_password_recovery; diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc index e7ea3dad..5a832c21 100644 --- a/libqpdf/QPDFJob.cc +++ b/libqpdf/QPDFJob.cc @@ -327,7 +327,6 @@ QPDFJob::QPDFJob() : suppress_warnings(false), warnings_exit_zero(false), copy_encryption(false), - encryption_file(0), encryption_file_password(0), encrypt(false), password_is_hex_key(false), @@ -2603,11 +2602,11 @@ QPDFJob::handlePageSpecs( // to the same underlying file with the same path to // achieve the same affect. char const* password = page_spec.password; - if (o.encryption_file && (password == 0) && + if ((! o.encryption_file.empty()) && (password == 0) && (page_spec.filename == o.encryption_file)) { QTC::TC("qpdf", "qpdf pages encryption password"); - password = o.encryption_file_password; + password = o.encryption_file_password.get(); } o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) { cout << prefix << ": processing " @@ -3221,7 +3220,8 @@ QPDFJob::setWriterOptions(QPDF& pdf, QPDFWriter& w) if (o.copy_encryption) { std::shared_ptr encryption_pdf = - processFile(o.encryption_file, o.encryption_file_password); + processFile(o.encryption_file.c_str(), + o.encryption_file_password.get()); w.copyEncryptionParameters(*encryption_pdf); } if (o.encrypt) diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc index 44185e9a..17f163ef 100644 --- a/libqpdf/QPDFJob_argv.cc +++ b/libqpdf/QPDFJob_argv.cc @@ -347,7 +347,7 @@ ArgParser::argCopyEncryption(char* parameter) void ArgParser::argEncryptionFilePassword(char* parameter) { - o.encryption_file_password = parameter; + o.encryption_file_password = QUtil::make_shared_cstr(parameter); } void