RFR JDK-8170114 jimage extract to not an empty directory overwrites content of the directory
Alan Bateman
Alan.Bateman at oracle.com
Sat Feb 10 10:25:05 UTC 2018
On 10/02/2018 00:04, mandy chung wrote:
> On 2/9/18 7:23 AM, Michal Vala wrote:
>>
>> Patch validates output directory before any jimage extracting happen.
>> I've moved validation to extra private method as it is few lines of
>> code. I've also added proper error message for case when output path
>> is not a directory (JImageTask.java#449).
>>
>
> Thanks for looking at JDK-8170114 and JDK-8170120. I took a look at
> http://cr.openjdk.java.net/~shade/8170114/webrev.01/
Yes, thanks for looking at these issues.
For `jimage info <not-a-jimage-file>` issue then jimage correctly fails
(with a non-zero status) but the IOException isn't converted into an
error message as it does with other errors. Yes, it would be good to fix
that.
I think the `jimage extract --dir <existing-file> <jimage-file>`
scenario needs discussion. If <existing-file> is a non-directory file
then jimage has to fail, I don't expect disagreement on that. For the
case where it is an existing directory then the options seem to be:
1. Extract into the existing directory (existing JDK 9 and JDK 10 behavior)
2. Fail if it's not empty (your patch)
3. Fail if it exists (Mandy's mail, the motivation being to keep it
consistent with jlink)
I view `jimage extract --dir <dir>` as being similar to `unzip -d <dir>`
so I don't think existing behavior (#1) is incorrect, the only issue is
that it silently overrides files whereas unzip will prompt before
overriding (unless you specify -o). The `jar` tool, and legacy `tar`
tool side with `jimage` and are happy to silently replace existing files.
What would you think about focusing on the override case instead of
disallowing extracting into an existing non-empty directory? I realize
this is more work as it means deciding on whether to prompt, warn or
fail. It also means thinking about the equivalent of unzip -o to
allowing existing files be replaced.
-Alan
More information about the jigsaw-dev
mailing list