Can I please get a review of this change which proposes to address the issue 
reported in https://bugs.openjdk.org/browse/JDK-8345506?

The `jar` tool has several operations which take `--file` as a parameter. The 
value for that option is a JAR file path. The `jar` operation is then run 
against that JAR file. The `--file` parameter is optional and when it isn't 
provided, the `jar` tool expects the JAR file content to be streamed through 
STDIN of the `jar` process.

The issue here is that the `--validate` option has a bug in the implementation 
where when the `--file` option is absent, it tries to read from the STDIN into 
a temporary file that the implementation just created. To do so it uses 
`Files.copy(...)` which throws an exception if the destination file exists 
(which it does in this case because that temporary destination file was created 
just a few lines above).

The fix in this commit address this issue by using an alternate way to transfer 
the JAR content into the temporary file. 

A new jtreg test has been introduced to reproduce the issue and verify the fix. 
I couldn't locate any other existing test which was exercising the code path 
which deals with `jar` operations against the STDIN of the `jar` process. So 
the new jtreg test has test for other operations and not just `--validate` 
operation.

The new test and existing tests in tier1, tier2 and tier3 continue to pass with 
this change.

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

Commit messages:
 - 8345506 add test
 - 8345506: jar --validate may lead to java.nio.file.FileAlreadyExistsException

Changes: https://git.openjdk.org/jdk/pull/22734/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22734&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8345506
  Stats: 130 lines in 2 files changed: 128 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/22734.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22734/head:pull/22734

PR: https://git.openjdk.org/jdk/pull/22734

Reply via email to