Quoting related changes in https://bugs.openjdk.java.net/browse/JDK-8250568 modified the way that process builder recognized argument strings, causing some arguments to be doubly quoted and malformed.
ProcessBuilder encodes command arguments in two ways, a looser legacy encoding and stricter encoding that prevents quotes from being misinterpreted. The system property jdk.lang.Process.allowAmbiguousCommands controls which is in effect. When the property is "true" or not set, arguments are inserted into the Windows command line with minimal changes. Arguments containing space or tab are quoted to prevent them being split. Arguments that start and end with double-quote are left alone. Some executables interpret a backslash before the final quote as an escape; if the argument contains first and last quotes, backslashes are ignored. When the allowAmbigousCommands property is `false`, care is taken to ensure that the final quote of an argument is the closing quote for the argument and is not interpreted as a literal quote by a preceding quote (or an odd number of quotes). The PR includes a test matrix of the cases where an argument with spaces and a final backslash is passed with each combination of `allowAmbiguousCommands = true and false`, launched executable, java, .cmd, and .vbs and when the argument is surrounded with double-quotes. The priority for allowAmbiguousCommands = false is that no argument is split or joined to another argument. In some cases, backslashes are doubled to prevent a double-quote from being interpreted incorrectly. The trailing backslash in an argument occurs rarely exception when the argument is a directory. In that case, the addition of trailing backslashes is benign when the string is used as a filesystem path. See also PR#7504, for background and a proposal. ------------- Commit messages: - Cleanup comment and copyright - JDK-8282008: Incorrect handling of quoted arguments in ProcessBuilder Changes: https://git.openjdk.java.net/jdk/pull/7709/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7709&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8282008 Stats: 341 lines in 2 files changed: 330 ins; 6 del; 5 mod Patch: https://git.openjdk.java.net/jdk/pull/7709.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/7709/head:pull/7709 PR: https://git.openjdk.java.net/jdk/pull/7709