Mercurial > hg > release > icedtea6-1.10
changeset 2597:f51056fa74b0
S7175845: "jar uf" changes file permissions unexpectedly
S7177216: native2ascii changes file permissions of input file
author | Andrew John Hughes <ahughes@redhat.com> |
---|---|
date | Mon, 15 Oct 2012 19:45:41 +0100 |
parents | 1277ee79b37c |
children | fdde7e12b1e5 |
files | ChangeLog Makefile.am NEWS patches/openjdk/7175845-jar_uf_changes_file_permissions.patch patches/openjdk/7177216-native2ascii_changes_file_permissions.patch |
diffstat | 5 files changed, 239 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Oct 12 19:33:48 2012 +0100 +++ b/ChangeLog Mon Oct 15 19:45:41 2012 +0100 @@ -1,3 +1,14 @@ +2012-10-15 Andrew John Hughes <gnu.andrew@redhat.com> + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: + Mention S7175845 and S7177216. + * patches/openjdk/7175845-jar_uf_changes_file_permissions.patch, + * patches/openjdk/7177216-native2ascii_changes_file_permissions.patch: + New backports to fix regressions caused by + S7143606. + 2012-10-12 Andrew John Hughes <gnu.andrew@redhat.com> * NEWS: Set release date for 1.10.10.
--- a/Makefile.am Fri Oct 12 19:33:48 2012 +0100 +++ b/Makefile.am Mon Oct 15 19:45:41 2012 +0100 @@ -424,7 +424,9 @@ patches/openjdk/7185678-xmenuitem_peer_npe.patch \ patches/openjdk/6815182-gssapi_spnego_does_not_work_with_server.patch \ patches/openjdk/6979329-ccacheinput_stream_fails_to_read_ticket_cache.patch \ - patches/openjdk/7110373-krb5_test_infrastructure.patch + patches/openjdk/7110373-krb5_test_infrastructure.patch \ + patches/openjdk/7175845-jar_uf_changes_file_permissions.patch \ + patches/openjdk/7177216-native2ascii_changes_file_permissions.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \
--- a/NEWS Fri Oct 12 19:33:48 2012 +0100 +++ b/NEWS Mon Oct 15 19:45:41 2012 +0100 @@ -37,6 +37,8 @@ - S7092186: adjust package access in rmiregistry * Bug fixes - PR1194: IcedTea tries to build with /usr/lib/jvm/java-openjdk (now a 1.7 VM) by default + - S7175845: "jar uf" changes file permissions unexpectedly + - S7177216: native2ascii changes file permissions of input file New in release 1.10.9 (2012-08-31):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/7175845-jar_uf_changes_file_permissions.patch Mon Oct 15 19:45:41 2012 +0100 @@ -0,0 +1,113 @@ +# HG changeset patch +# User mbankal +# Date 1342460916 25200 +# Node ID 2366192c7fcb928a2adec2bdf08138688dac0423 +# Parent 0e34d43263864db83322f337262fbb2be3be5d17 +7175845: "jar uf" changes file permissions unexpectedly +Reviewed-by: ohair +Contributed-by: mala.bankal@oracle.com + +diff --git a/src/share/classes/sun/tools/jar/Main.java b/src/share/classes/sun/tools/jar/Main.java +--- openjdk/jdk/src/share/classes/sun/tools/jar/Main.java ++++ openjdk/jdk/src/share/classes/sun/tools/jar/Main.java +@@ -134,7 +134,7 @@ + File dir = file.getParentFile(); + if (dir == null) + dir = new File("."); +- return sun.misc.IOUtils.createTempFile("jartmp", null, dir); ++ return File.createTempFile("jartmp", null, dir); + } + + private boolean ok; +diff --git a/test/tools/jar/UpdateJar.java b/test/tools/jar/UpdateJar.java +new file mode 100644 +--- /dev/null ++++ openjdk/jdk/test/tools/jar/UpdateJar.java +@@ -0,0 +1,87 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/** ++ * @test ++ * @bug 7175845 ++ * @summary jar -uf should not change file permission ++ */ ++ ++import java.io.*; ++import java.nio.file.*; ++import java.nio.file.attribute.*; ++import java.util.Set; ++import sun.tools.jar.Main; ++ ++public class UpdateJar { ++ ++ private static void cleanup(String... fnames) throws Throwable { ++ for (String fname : fnames) { ++ Files.deleteIfExists(Paths.get(fname)); ++ } ++ } ++ ++ public static void realMain(String[] args) throws Throwable { ++ if (!System.getProperty("os.name").startsWith("Windows")) { ++ String jar = "testUpdateJar.jar"; ++ String e0 = "testUpdateJar_entry0.txt"; ++ String e1 = "testUpdateJar_entry1.txt"; ++ cleanup(jar, e0, e1); ++ try { ++ try (FileOutputStream fos0 = new FileOutputStream(e0); ++ FileOutputStream fos1 = new FileOutputStream(e1)) { ++ fos0.write(0); ++ fos1.write(0); ++ } ++ String[] jarArgs = new String[] {"cfM0", jar, e0}; ++ if (!new Main(System.out, System.err, "jar").run(jarArgs)) { ++ fail("Could not create jar file."); ++ } ++ Set<PosixFilePermission> pm = Files.getPosixFilePermissions(Paths.get(jar)); ++ jarArgs = new String[] {"uf", jar, e1}; ++ if (!new Main(System.out, System.err, "jar").run(jarArgs)) { ++ fail("Could not create jar file."); ++ } ++ equal(pm, Files.getPosixFilePermissions(Paths.get(jar))); ++ } finally { ++ cleanup(jar, e0, e1); ++ } ++ } ++ } ++ ++ //--------------------- Infrastructure --------------------------- ++ static volatile int passed = 0, failed = 0; ++ static void pass() {passed++;} ++ static void fail() {failed++; Thread.dumpStack();} ++ static void fail(String msg) {System.out.println(msg); fail();} ++ static void unexpected(Throwable t) {failed++; t.printStackTrace();} ++ static void check(boolean cond) {if (cond) pass(); else fail();} ++ static void equal(Object x, Object y) { ++ if (x == null ? y == null : x.equals(y)) pass(); ++ else fail(x + " not equal to " + y);} ++ public static void main(String[] args) throws Throwable { ++ try {realMain(args);} catch (Throwable t) {unexpected(t);} ++ System.out.println("\nPassed = " + passed + " failed = " + failed); ++ if (failed > 0) throw new AssertionError("Some tests failed");} ++} ++
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/7177216-native2ascii_changes_file_permissions.patch Mon Oct 15 19:45:41 2012 +0100 @@ -0,0 +1,110 @@ +# HG changeset patch +# User mbankal +# Date 1342030130 25200 +# Node ID 0e34d43263864db83322f337262fbb2be3be5d17 +# Parent 99b43838c5d0a55a92bccbb62e6df5ee685978b6 +7177216: native2ascii changes file permissions of input file +Reviewed-by: ohair + +diff --git a/src/share/classes/sun/tools/native2ascii/Main.java b/src/share/classes/sun/tools/native2ascii/Main.java +--- openjdk/jdk/src/share/classes/sun/tools/native2ascii/Main.java ++++ openjdk/jdk/src/share/classes/sun/tools/native2ascii/Main.java +@@ -237,7 +237,7 @@ + if (tempDir == null) + tempDir = new File(System.getProperty("user.dir")); + +- tempFile = sun.misc.IOUtils.createTempFile("_N2A", ".TMP", tempDir); ++ tempFile = File.createTempFile("_N2A", ".TMP", tempDir); + tempFile.deleteOnExit(); + + try { +diff --git a/test/sun/tools/native2ascii/Permission.java b/test/sun/tools/native2ascii/Permission.java +new file mode 100644 +--- /dev/null ++++ openjdk/jdk/test/sun/tools/native2ascii/Permission.java +@@ -0,0 +1,85 @@ ++/* ++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/** ++ * @test ++ * @bug 7177216 ++ * @summary resulting file of native2ascii should have normal permission ++ */ ++ ++import java.io.*; ++import java.nio.file.*; ++import java.nio.file.attribute.*; ++import sun.tools.native2ascii.Main; ++ ++public class Permission { ++ ++ private static void cleanup(String... fnames) throws Throwable { ++ for (String fname : fnames) { ++ Files.deleteIfExists(Paths.get(fname)); ++ } ++ } ++ ++ public static void realMain(String[] args) throws Throwable { ++ if (!System.getProperty("os.name").startsWith("Windows")) { ++ String src = "native2ascii_permtest_src"; ++ String dst = "native2ascii_permtest_dst"; ++ ++ cleanup(src, dst); ++ try { ++ try (FileOutputStream fos = new FileOutputStream(src)) { ++ fos.write('a'); fos.write('b'); fos.write('c'); ++ } ++ String[] n2aArgs = new String[] {"-encoding", "utf8", src, dst}; ++ if (!new Main().convert(n2aArgs)) { ++ fail("n2a failed."); ++ } ++ equal(Files.getPosixFilePermissions(Paths.get(src)), ++ Files.getPosixFilePermissions(Paths.get(dst))); ++ String[] a2nArgs = new String[] {"-reverse", "-encoding", "utf8", dst, src}; ++ if (!new Main().convert(a2nArgs)) { ++ fail("a2n failed."); ++ } ++ equal(Files.getPosixFilePermissions(Paths.get(src)), ++ Files.getPosixFilePermissions(Paths.get(dst))); ++ } finally { ++ cleanup(src, dst); ++ } ++ } ++ } ++ ++ //--------------------- Infrastructure --------------------------- ++ static volatile int passed = 0, failed = 0; ++ static void pass() {passed++;} ++ static void fail() {failed++; Thread.dumpStack();} ++ static void fail(String msg) {System.out.println(msg); fail();} ++ static void unexpected(Throwable t) {failed++; t.printStackTrace();} ++ static void check(boolean cond) {if (cond) pass(); else fail();} ++ static void equal(Object x, Object y) { ++ if (x == null ? y == null : x.equals(y)) pass(); ++ else fail(x + " not equal to " + y);} ++ public static void main(String[] args) throws Throwable { ++ try {realMain(args);} catch (Throwable t) {unexpected(t);} ++ System.out.println("\nPassed = " + passed + " failed = " + failed); ++ if (failed > 0) throw new AssertionError("Some tests failed");} ++}