Package: ucf Version: 3.0038 repro steps:
run with valid file arguments: # /usr/bin/ucf -n --debconf-ok /file1 /file2 *** ERROR: Need exactly two arguments, got 3 Debian GNU/Linux ucf Revision: 3.00 . Copyright (C) 2002-2005 Manoj Srivastava. This is free software; see the GNU General Public Licence for copying conditions. There is NO warranty. Usage: ucf [options] new_file destination Options: -h, --help print this message -s foo, --src-dir foo Set the src dir (historical md5sums live here) --sum-file bar Force the historical md5sums to be read from this file. Overrides any setting of --src-dir. -d[n], --debug=[n] Set the Debug level to N. Please note there must be no spaces before the debug level -n, --no-action Dry run. No action is actually taken. -v, --verbose Make the script verbose --three-way Register this file in the cache, and turn on the diff3 option allowing the merging of maintainer changes into a (potentially modified) local configuration file. ) --state-dir bar Set the state directory to bar instead of the default '/var/lib/ucf'. Used mostly for testing. --debconf-ok Indicate that it is ok for ucf to use an already running debconf instance for prompting. --debconf-template bar Specify an alternate, caller-provided debconf template to use for prompting. Usage: ucf -p destination -p, --purge Remove any reference to destination from records By default, the directory the new_file lives in is assumed to be the src-dir, which is where we look for any historical md5sums. expected: does dry run as it should without error. This is because it tries to save the -n argument then use it to call itself again. But when saving the argument, it runs echo -n, expecting the output to be -n, but it's actually an empty string, so it saves that emptry string and passes that instead of -n. Patch is attached.
--- ucf-3.0038/ucf 2018-02-25 19:58:23.000000000 -0500 +++ new/ucf 2018-03-07 16:42:55.727057127 -0500 @@ -308,7 +308,7 @@ # Escape single quotes in the arguments passed in quote_single() { - echo "$1" | sed -e "s,','\\\\'',g" + printf "%s\n" "$1" | sed -e "s,','\\\\'',g" }
-- Ian Kelling | Senior Systems Administrator, Free Software Foundation GPG Key: B125 F60B 7B28 7FF6 A2B7 DF8F 170A F0E2 9542 95DF https://fsf.org | https://gnu.org