Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.1, 1.2
-
None
-
Darwin dator 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)and
Linux build-einarmr 2.6.9-023stab048.4-smp #1 SMP Fri Jul 11 18:50:44 MSD 2008 x86_64 x86_64 x86_64 GNU/Linux
GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)Darwin dator 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386 GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0) and Linux build-einarmr 2.6.9-023stab048.4-smp #1 SMP Fri Jul 11 18:50:44 MSD 2008 x86_64 x86_64 x86_64 GNU/Linux GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)
Description
org.apache.commons.cli.Parser.processArgs() calls Util.stripLeadingAndTrailingQuotes() for all argument values. IMHO this is incorrect and totally broken.
It is trivial to create a simple test for this. Output:
$ java -cp target/clitest.jar Clitest --balloo "this is a \"test\""
Value of argument balloo is 'this is a "test'.
The argument 'balloo' should indeed keep its trailing double quote. It is what the shell gives it, so don't try to do something clever to it.
The offending code was committed here:
http://svn.apache.org/viewvc?view=rev&revision=129874
and has been there for more than 6 years . Why was this committed in the first place?
The fix is trivial, just get rid of Util.stripLeadingAndTrailingQuotes(), and consequently avoid calling it from Parser.processArgs().