RFR: 8282008: Incorrect handling of quoted arguments in ProcessBuilder [v4]

Maxim Kartashev duke at openjdk.java.net
Thu Mar 10 14:11:42 UTC 2022


On Mon, 7 Mar 2022 16:46:28 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> Olga Mikhaltsova has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Reverted addition of the test via echo
>
> As an alternative fix, please take a look at Draft PR: https://github.com/openjdk/jdk/pull/7709.
> 
> In the default handling of arguments, the check for what is quoted is reverted to prior to 8255068. First and last quotes are sufficient to identify a "quoted" string. The check for a backslash ("\") is removed.
> This original check is sufficient for `jdk.lang.Process.allowAmbiguousCommands = true`.
> 
> For the case where the system property `jdk.lang.Process.allowAmbiguousCommands = false`
> and the argument has first and last quotes, a backslash ("\") before the final quote must not allow the quote to interpreted as a literal quote and merge the following argument.  The backslashes will doubled to prevent the interpretation of the quote as a literal.  This is the correct encoding if the command uses the ".exe" encoding, when reparsing the arguments the doubled backslashes are reduced to the original contents.
> When the command is using the simpler parsing that does not support literal quotes, the backslash before the quote is typically is a trailing backslash on a file path and in that case the additional backslash is redundant and has no effect on the interpretation of the argument as a directory path.
> 
> The PR includes a test of the 12 combinations of invoking an "java"/.exe program, a .cmd script, and a Visual Basic script (which uses the .exe rules but different command line parser); with and without application quotes and compares the actual results with the expected arguments.

@RogerRiggs I believe your patch fixes the use case(s) we are interested in. Would be good to see it merged into `master`.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7504


More information about the core-libs-dev mailing list