Disallow --empty with --replace-input (fixes #728)

This commit is contained in:
Jay Berkenbilt 2022-09-02 09:37:17 -04:00
parent fa15042ce9
commit 31396f61c9
2 changed files with 14 additions and 1 deletions

View File

@ -683,7 +683,13 @@ QPDFJob::getExitCode() const
void
QPDFJob::checkConfiguration()
{
// Do final checks for command-line consistency. (I always think
// this is called doFinalChecks, so I'm putting that in a
// comment.)
if (m->replace_input) {
// Check for --empty appears later after we have checked
// m->infilename.
if (m->outfilename) {
usage("--replace-input may not be used when"
" an output file is specified");
@ -700,6 +706,8 @@ QPDFJob::checkConfiguration()
}
if (m->infilename == nullptr) {
usage("an input file name is required");
} else if (m->replace_input && (strlen(m->infilename.get()) == 0)) {
usage("--replace-input may not be used with --empty");
} else if (
m->require_outfile && (m->outfilename == nullptr) &&
(!m->replace_input)) {

View File

@ -15,7 +15,7 @@ cleanup();
my $td = new TestDriver('arg-parsing');
my $n_tests = 16;
my $n_tests = 17;
$td->runtest("required argument",
{$td->COMMAND => "qpdf --password minimal.pdf"},
@ -102,6 +102,11 @@ $td->runtest("ignore -- at top level",
{$td->REGEXP => ".*No syntax or stream encoding errors found.*",
$td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->runtest("empty and replace-input",
{$td->COMMAND => "qpdf --empty --replace-input"},
{$td->REGEXP => ".*--replace-input may not be used with --empty.*",
$td->EXIT_STATUS => 2},
$td->NORMALIZE_NEWLINES);
cleanup();
$td->report($n_tests);