This commit is contained in:
parent
3f9e534293
commit
719bc6581b
367
8038636.patch
367
8038636.patch
@ -1,367 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp 2018-09-18 09:01:41.412881903 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp 2018-09-18 09:03:51.077559026 +0200
|
||||
@@ -3699,6 +3699,10 @@
|
||||
("purge: %s(%s): prev method @%d in version @%d is alive",
|
||||
method->name()->as_C_string(),
|
||||
method->signature()->as_C_string(), j, i));
|
||||
+ if (method->method_data() != NULL) {
|
||||
+ // Clean out any weak method links
|
||||
+ method->method_data()->clean_weak_method_links();
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3708,6 +3712,14 @@
|
||||
("purge: previous version stats: live=%d, deleted=%d", live_count,
|
||||
deleted_count));
|
||||
}
|
||||
+
|
||||
+ Array<Method*>* methods = ik->methods();
|
||||
+ int num_methods = methods->length();
|
||||
+ for (int index2 = 0; index2 < num_methods; ++index2) {
|
||||
+ if (methods->at(index2)->method_data() != NULL) {
|
||||
+ methods->at(index2)->method_data()->clean_weak_method_links();
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
// External interface for use during class unloading.
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.cpp 2018-09-18 09:01:41.412881903 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.cpp 2018-09-18 09:03:51.077559026 +0200
|
||||
@@ -1559,9 +1559,35 @@
|
||||
}
|
||||
}
|
||||
|
||||
-// Remove SpeculativeTrapData entries that reference an unloaded
|
||||
-// method
|
||||
-void MethodData::clean_extra_data(BoolObjectClosure* is_alive) {
|
||||
+class CleanExtraDataClosure : public StackObj {
|
||||
+public:
|
||||
+ virtual bool is_live(Method* m) = 0;
|
||||
+};
|
||||
+
|
||||
+// Check for entries that reference an unloaded method
|
||||
+class CleanExtraDataKlassClosure : public CleanExtraDataClosure {
|
||||
+private:
|
||||
+ BoolObjectClosure* _is_alive;
|
||||
+public:
|
||||
+ CleanExtraDataKlassClosure(BoolObjectClosure* is_alive) : _is_alive(is_alive) {}
|
||||
+ bool is_live(Method* m) {
|
||||
+ return m->method_holder()->is_loader_alive(_is_alive);
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+// Check for entries that reference a redefined method
|
||||
+class CleanExtraDataMethodClosure : public CleanExtraDataClosure {
|
||||
+public:
|
||||
+ CleanExtraDataMethodClosure() {}
|
||||
+ bool is_live(Method* m) {
|
||||
+ return m->on_stack();
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+
|
||||
+// Remove SpeculativeTrapData entries that reference an unloaded or
|
||||
+// redefined method
|
||||
+void MethodData::clean_extra_data(CleanExtraDataClosure* cl) {
|
||||
DataLayout* dp = extra_data_base();
|
||||
DataLayout* end = extra_data_limit();
|
||||
|
||||
@@ -1572,7 +1598,7 @@
|
||||
SpeculativeTrapData* data = new SpeculativeTrapData(dp);
|
||||
Method* m = data->method();
|
||||
assert(m != NULL, "should have a method");
|
||||
- if (!m->method_holder()->is_loader_alive(is_alive)) {
|
||||
+ if (!cl->is_live(m)) {
|
||||
// "shift" accumulates the number of cells for dead
|
||||
// SpeculativeTrapData entries that have been seen so
|
||||
// far. Following entries must be shifted left by that many
|
||||
@@ -1603,9 +1629,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
-// Verify there's no unloaded method referenced by a
|
||||
+// Verify there's no unloaded or redefined method referenced by a
|
||||
// SpeculativeTrapData entry
|
||||
-void MethodData::verify_extra_data_clean(BoolObjectClosure* is_alive) {
|
||||
+void MethodData::verify_extra_data_clean(CleanExtraDataClosure* cl) {
|
||||
#ifdef ASSERT
|
||||
DataLayout* dp = extra_data_base();
|
||||
DataLayout* end = extra_data_limit();
|
||||
@@ -1615,7 +1641,7 @@
|
||||
case DataLayout::speculative_trap_data_tag: {
|
||||
SpeculativeTrapData* data = new SpeculativeTrapData(dp);
|
||||
Method* m = data->method();
|
||||
- assert(m != NULL && m->method_holder()->is_loader_alive(is_alive), "Method should exist");
|
||||
+ assert(m != NULL && cl->is_live(m), "Method should exist");
|
||||
break;
|
||||
}
|
||||
case DataLayout::bit_data_tag:
|
||||
@@ -1641,6 +1667,19 @@
|
||||
parameters->clean_weak_klass_links(is_alive);
|
||||
}
|
||||
|
||||
- clean_extra_data(is_alive);
|
||||
- verify_extra_data_clean(is_alive);
|
||||
+ CleanExtraDataKlassClosure cl(is_alive);
|
||||
+ clean_extra_data(&cl);
|
||||
+ verify_extra_data_clean(&cl);
|
||||
+}
|
||||
+
|
||||
+void MethodData::clean_weak_method_links() {
|
||||
+ for (ProfileData* data = first_data();
|
||||
+ is_valid(data);
|
||||
+ data = next_data(data)) {
|
||||
+ data->clean_weak_method_links();
|
||||
+ }
|
||||
+
|
||||
+ CleanExtraDataMethodClosure cl;
|
||||
+ clean_extra_data(&cl);
|
||||
+ verify_extra_data_clean(&cl);
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.hpp 2018-09-18 09:01:41.412881903 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.hpp 2018-09-18 09:03:51.077559026 +0200
|
||||
@@ -251,6 +251,9 @@
|
||||
|
||||
// GC support
|
||||
void clean_weak_klass_links(BoolObjectClosure* cl);
|
||||
+
|
||||
+ // Redefinition support
|
||||
+ void clean_weak_method_links();
|
||||
};
|
||||
|
||||
|
||||
@@ -508,6 +511,9 @@
|
||||
// GC support
|
||||
virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {}
|
||||
|
||||
+ // Redefinition support
|
||||
+ virtual void clean_weak_method_links() {}
|
||||
+
|
||||
// CI translation: ProfileData can represent both MethodDataOop data
|
||||
// as well as CIMethodData data. This function is provided for translating
|
||||
// an oop in a ProfileData to the ci equivalent. Generally speaking,
|
||||
@@ -2030,6 +2036,7 @@
|
||||
//
|
||||
|
||||
CC_INTERP_ONLY(class BytecodeInterpreter;)
|
||||
+class CleanExtraDataClosure;
|
||||
|
||||
class MethodData : public Metadata {
|
||||
friend class VMStructs;
|
||||
@@ -2183,9 +2190,9 @@
|
||||
static bool profile_parameters_jsr292_only();
|
||||
static bool profile_all_parameters();
|
||||
|
||||
- void clean_extra_data(BoolObjectClosure* is_alive);
|
||||
+ void clean_extra_data(CleanExtraDataClosure* cl);
|
||||
void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false);
|
||||
- void verify_extra_data_clean(BoolObjectClosure* is_alive);
|
||||
+ void verify_extra_data_clean(CleanExtraDataClosure* cl);
|
||||
|
||||
public:
|
||||
static int header_size() {
|
||||
@@ -2477,6 +2484,8 @@
|
||||
static bool profile_return_jsr292_only();
|
||||
|
||||
void clean_method_data(BoolObjectClosure* is_alive);
|
||||
+
|
||||
+ void clean_weak_method_links();
|
||||
};
|
||||
|
||||
#endif // SHARE_VM_OOPS_METHODDATAOOP_HPP
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/test/compiler/profiling/spectrapredefineclass/Agent.java Tue Apr 08 09:51:25 2014 +0200
|
||||
@@ -0,0 +1,142 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2014, 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.
|
||||
+ */
|
||||
+
|
||||
+import java.security.*;
|
||||
+import java.lang.instrument.*;
|
||||
+import java.lang.reflect.*;
|
||||
+import java.lang.management.ManagementFactory;
|
||||
+import com.sun.tools.attach.VirtualMachine;
|
||||
+
|
||||
+class A {
|
||||
+ void m() {
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+class B extends A {
|
||||
+ void m() {
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+class C extends A {
|
||||
+ void m() {
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+class Test {
|
||||
+
|
||||
+ static public void m() throws Exception {
|
||||
+ for (int i = 0; i < 20000; i++) {
|
||||
+ m1(a);
|
||||
+ }
|
||||
+ for (int i = 0; i < 4; i++) {
|
||||
+ m1(b);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ static boolean m1(A a) {
|
||||
+ boolean res = Agent.m2(a);
|
||||
+ return res;
|
||||
+ }
|
||||
+
|
||||
+ static public A a = new A();
|
||||
+ static public B b = new B();
|
||||
+ static public C c = new C();
|
||||
+}
|
||||
+
|
||||
+public class Agent implements ClassFileTransformer {
|
||||
+
|
||||
+
|
||||
+ static class MemoryChunk {
|
||||
+ MemoryChunk other;
|
||||
+ long[] array;
|
||||
+ MemoryChunk(MemoryChunk other) {
|
||||
+ other = other;
|
||||
+ array = new long[1024 * 1024 * 1024];
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ static public boolean m2(A a) {
|
||||
+ boolean res = false;
|
||||
+ if (a.getClass() == B.class) {
|
||||
+ a.m();
|
||||
+ } else {
|
||||
+ res = true;
|
||||
+ }
|
||||
+ return res;
|
||||
+ }
|
||||
+
|
||||
+ static public void main(String[] args) throws Exception {
|
||||
+ // Create speculative trap entries
|
||||
+ Test.m();
|
||||
+
|
||||
+ String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
|
||||
+ int p = nameOfRunningVM.indexOf('@');
|
||||
+ String pid = nameOfRunningVM.substring(0, p);
|
||||
+
|
||||
+ // Make the nmethod go away
|
||||
+ for (int i = 0; i < 10; i++) {
|
||||
+ System.gc();
|
||||
+ }
|
||||
+
|
||||
+ // Redefine class
|
||||
+ try {
|
||||
+ VirtualMachine vm = VirtualMachine.attach(pid);
|
||||
+ vm.loadAgent(System.getProperty("test.classes",".") + "/agent.jar", "");
|
||||
+ vm.detach();
|
||||
+ } catch (Exception e) {
|
||||
+ throw new RuntimeException(e);
|
||||
+ }
|
||||
+
|
||||
+ Test.m();
|
||||
+ // GC will hit dead method pointer
|
||||
+ for (int i = 0; i < 10; i++) {
|
||||
+ System.gc();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public synchronized byte[] transform(final ClassLoader classLoader,
|
||||
+ final String className,
|
||||
+ Class<?> classBeingRedefined,
|
||||
+ ProtectionDomain protectionDomain,
|
||||
+ byte[] classfileBuffer) {
|
||||
+ System.out.println("Transforming class " + className);
|
||||
+ return classfileBuffer;
|
||||
+ }
|
||||
+
|
||||
+ public static void redefine(String agentArgs, Instrumentation instrumentation, Class to_redefine) {
|
||||
+
|
||||
+ try {
|
||||
+ instrumentation.retransformClasses(to_redefine);
|
||||
+ } catch (Exception e) {
|
||||
+ e.printStackTrace();
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ public static void agentmain(String agentArgs, Instrumentation instrumentation) throws Exception {
|
||||
+ Agent transformer = new Agent();
|
||||
+ instrumentation.addTransformer(transformer, true);
|
||||
+
|
||||
+ redefine(agentArgs, instrumentation, Test.class);
|
||||
+ }
|
||||
+}
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/test/compiler/profiling/spectrapredefineclass/Launcher.java Tue Apr 08 09:51:25 2014 +0200
|
||||
@@ -0,0 +1,47 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2014, 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.
|
||||
+ */
|
||||
+import java.io.PrintWriter;
|
||||
+import com.oracle.java.testlibrary.*;
|
||||
+
|
||||
+/*
|
||||
+ * @test
|
||||
+ * @bug 8038636
|
||||
+ * @library /testlibrary
|
||||
+ * @build Agent
|
||||
+ * @run main ClassFileInstaller Agent
|
||||
+ * @run main Launcher
|
||||
+ * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:TypeProfileLevel=222 -Xmx1M -XX:ReservedCodeCacheSize=3M Agent
|
||||
+ */
|
||||
+public class Launcher {
|
||||
+ public static void main(String[] args) throws Exception {
|
||||
+
|
||||
+ PrintWriter pw = new PrintWriter("MANIFEST.MF");
|
||||
+ pw.println("Agent-Class: Agent");
|
||||
+ pw.println("Can-Retransform-Classes: true");
|
||||
+ pw.close();
|
||||
+
|
||||
+ ProcessBuilder pb = new ProcessBuilder();
|
||||
+ pb.command(new String[] { JDKToolFinder.getJDKTool("jar"), "cmf", "MANIFEST.MF", System.getProperty("test.classes",".") + "/agent.jar", "Agent.class"});
|
||||
+ pb.start().waitFor();
|
||||
+ }
|
||||
+}
|
@ -1,18 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java 2018-09-18 09:01:53.500945030 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java 2018-09-18 09:08:14.826936408 +0200
|
||||
@@ -171,8 +171,14 @@
|
||||
signer = getRandomCert(certList);
|
||||
} while (cert.getIssuerX500Principal().equals(signer.getSubjectX500Principal()));
|
||||
try {
|
||||
- cert.verify(signer.getPublicKey());
|
||||
+ PublicKey signerPublicKey = signer.getPublicKey();
|
||||
+ cert.verify(signerPublicKey);
|
||||
+ // Ignore false positives
|
||||
+ if (cert.getPublicKey().equals(signerPublicKey)) {
|
||||
+ System.out.println("OK: self-signed certificate detected");
|
||||
+ } else {
|
||||
throw new Exception("Verified invalid signature");
|
||||
+ }
|
||||
} catch (SignatureException | InvalidKeyException e) {
|
||||
System.out.println("OK: " + e);
|
||||
}
|
1109
8055008.patch
1109
8055008.patch
File diff suppressed because it is too large
Load Diff
@ -1,74 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/bin/java.c 2018-09-18 09:11:59.480109603 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/bin/java.c 2018-09-18 09:15:55.665368268 +0200
|
||||
@@ -660,16 +660,25 @@
|
||||
* arguments are for the application (i.e. the main class name, or
|
||||
* the -jar argument).
|
||||
*/
|
||||
- if ((i > 0 && *arg != '-')
|
||||
+ if (i > 0) {
|
||||
+ char *prev = argv[i - 1];
|
||||
+ // skip non-dash arg preceded by class path specifiers
|
||||
+ if (*arg != '-' &&
|
||||
+ ((JLI_StrCmp(prev, "-cp") == 0
|
||||
+ || JLI_StrCmp(prev, "-classpath") == 0))) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (*arg != '-'
|
||||
|| JLI_StrCmp(arg, "-version") == 0
|
||||
|| JLI_StrCmp(arg, "-fullversion") == 0
|
||||
|| JLI_StrCmp(arg, "-help") == 0
|
||||
|| JLI_StrCmp(arg, "-?") == 0
|
||||
|| JLI_StrCmp(arg, "-jar") == 0
|
||||
- || JLI_StrCmp(arg, "-X") == 0
|
||||
- ) {
|
||||
+ || JLI_StrCmp(arg, "-X") == 0) {
|
||||
return;
|
||||
}
|
||||
+ }
|
||||
/*
|
||||
* The following case checks for "-XX:NativeMemoryTracking=value".
|
||||
* If value is non null, an environmental variable set to this value
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/tools/launcher/TestSpecialArgs.java 2018-09-18 09:11:59.320108768 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/tools/launcher/TestSpecialArgs.java 2018-09-18 09:15:55.665368268 +0200
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
- * @bug 7124089 7131021 8042469 8066185
|
||||
+ * @bug 7124089 7131021 8042469 8066185 8074373
|
||||
* @summary Checks for Launcher special flags, such as MacOSX specific flags,
|
||||
* and JVM NativeMemoryTracking flags.
|
||||
* @compile -XDignore.symbol.file TestSpecialArgs.java EnvironmentVariables.java
|
||||
@@ -270,6 +270,16 @@
|
||||
tr = doExec(envMap, javaCmd, "Foo", "-XX:NativeMemoryTracking=summary");
|
||||
checkTestResult(tr);
|
||||
|
||||
+ // should accept with no warnings
|
||||
+ tr = doExec(javaCmd, "-cp", jarFile.getName(),
|
||||
+ "-XX:NativeMemoryTracking=summary", "Foo");
|
||||
+ ensureNoWarnings(tr);
|
||||
+
|
||||
+ // should accept with no warnings
|
||||
+ tr = doExec(javaCmd, "-classpath", jarFile.getName(),
|
||||
+ "-XX:NativeMemoryTracking=summary", "Foo");
|
||||
+ ensureNoWarnings(tr);
|
||||
+
|
||||
// make sure a missing class is handled correctly, because the class
|
||||
// resolution is performed by the JVM.
|
||||
tr = doExec(javaCmd, "AbsentClass", "-XX:NativeMemoryTracking=summary");
|
||||
@@ -277,6 +287,14 @@
|
||||
throw new RuntimeException("Test Fails");
|
||||
}
|
||||
}
|
||||
+
|
||||
+ void ensureNoWarnings(TestResult tr) {
|
||||
+ checkTestResult(tr);
|
||||
+ if (tr.contains("warning: Native Memory Tracking")) {
|
||||
+ System.err.println(tr.toString());
|
||||
+ throw new RuntimeException("Test Fails");
|
||||
+ }
|
||||
+ }
|
||||
|
||||
void checkTestResult(TestResult tr) {
|
||||
if (!tr.isOK()) {
|
390
8076117.patch
390
8076117.patch
@ -1,390 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java 2018-09-18 09:17:15.173802539 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java 2018-09-18 09:17:34.745909443 +0200
|
||||
@@ -132,26 +132,33 @@
|
||||
return new EndEntityChecker(type, variant);
|
||||
}
|
||||
|
||||
- void check(X509Certificate cert, Object parameter)
|
||||
- throws CertificateException {
|
||||
+ void check(X509Certificate cert, Object parameter,
|
||||
+ boolean checkUnresolvedCritExts) throws CertificateException {
|
||||
if (variant.equals(Validator.VAR_GENERIC)) {
|
||||
- // no checks
|
||||
- return;
|
||||
- } else if (variant.equals(Validator.VAR_TLS_SERVER)) {
|
||||
- checkTLSServer(cert, (String)parameter);
|
||||
+ return; // no checks
|
||||
+ }
|
||||
+
|
||||
+ Set<String> exts = getCriticalExtensions(cert);
|
||||
+ if (variant.equals(Validator.VAR_TLS_SERVER)) {
|
||||
+ checkTLSServer(cert, (String)parameter, exts);
|
||||
} else if (variant.equals(Validator.VAR_TLS_CLIENT)) {
|
||||
- checkTLSClient(cert);
|
||||
+ checkTLSClient(cert, exts);
|
||||
} else if (variant.equals(Validator.VAR_CODE_SIGNING)) {
|
||||
- checkCodeSigning(cert);
|
||||
+ checkCodeSigning(cert, exts);
|
||||
} else if (variant.equals(Validator.VAR_JCE_SIGNING)) {
|
||||
- checkCodeSigning(cert);
|
||||
+ checkCodeSigning(cert, exts);
|
||||
} else if (variant.equals(Validator.VAR_PLUGIN_CODE_SIGNING)) {
|
||||
- checkCodeSigning(cert);
|
||||
+ checkCodeSigning(cert, exts);
|
||||
} else if (variant.equals(Validator.VAR_TSA_SERVER)) {
|
||||
- checkTSAServer(cert);
|
||||
+ checkTSAServer(cert, exts);
|
||||
} else {
|
||||
throw new CertificateException("Unknown variant: " + variant);
|
||||
}
|
||||
+
|
||||
+ // if neither VAR_GENERIC variant nor unknown variant
|
||||
+ if (checkUnresolvedCritExts) {
|
||||
+ checkRemainingExtensions(exts);
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -219,10 +226,8 @@
|
||||
* authentication.
|
||||
* @throws CertificateException if not.
|
||||
*/
|
||||
- private void checkTLSClient(X509Certificate cert)
|
||||
+ private void checkTLSClient(X509Certificate cert, Set<String> exts)
|
||||
throws CertificateException {
|
||||
- Set<String> exts = getCriticalExtensions(cert);
|
||||
-
|
||||
if (checkKeyUsage(cert, KU_SIGNATURE) == false) {
|
||||
throw new ValidatorException
|
||||
("KeyUsage does not allow digital signatures",
|
||||
@@ -245,8 +250,6 @@
|
||||
exts.remove(SimpleValidator.OID_KEY_USAGE);
|
||||
exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE);
|
||||
exts.remove(SimpleValidator.OID_NETSCAPE_CERT_TYPE);
|
||||
-
|
||||
- checkRemainingExtensions(exts);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -255,10 +258,8 @@
|
||||
* specification for details.
|
||||
* @throws CertificateException if not.
|
||||
*/
|
||||
- private void checkTLSServer(X509Certificate cert, String parameter)
|
||||
- throws CertificateException {
|
||||
- Set<String> exts = getCriticalExtensions(cert);
|
||||
-
|
||||
+ private void checkTLSServer(X509Certificate cert, String parameter,
|
||||
+ Set<String> exts) throws CertificateException {
|
||||
if (KU_SERVER_ENCRYPTION.contains(parameter)) {
|
||||
if (checkKeyUsage(cert, KU_KEY_ENCIPHERMENT) == false) {
|
||||
throw new ValidatorException
|
||||
@@ -303,18 +304,14 @@
|
||||
exts.remove(SimpleValidator.OID_KEY_USAGE);
|
||||
exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE);
|
||||
exts.remove(SimpleValidator.OID_NETSCAPE_CERT_TYPE);
|
||||
-
|
||||
- checkRemainingExtensions(exts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether this certificate can be used for code signing.
|
||||
* @throws CertificateException if not.
|
||||
*/
|
||||
- private void checkCodeSigning(X509Certificate cert)
|
||||
+ private void checkCodeSigning(X509Certificate cert, Set<String> exts)
|
||||
throws CertificateException {
|
||||
- Set<String> exts = getCriticalExtensions(cert);
|
||||
-
|
||||
if (checkKeyUsage(cert, KU_SIGNATURE) == false) {
|
||||
throw new ValidatorException
|
||||
("KeyUsage does not allow digital signatures",
|
||||
@@ -341,8 +338,6 @@
|
||||
// remove extensions we checked
|
||||
exts.remove(SimpleValidator.OID_KEY_USAGE);
|
||||
exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE);
|
||||
-
|
||||
- checkRemainingExtensions(exts);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -350,10 +345,8 @@
|
||||
* server (see RFC 3161, section 2.3).
|
||||
* @throws CertificateException if not.
|
||||
*/
|
||||
- private void checkTSAServer(X509Certificate cert)
|
||||
+ private void checkTSAServer(X509Certificate cert, Set<String> exts)
|
||||
throws CertificateException {
|
||||
- Set<String> exts = getCriticalExtensions(cert);
|
||||
-
|
||||
if (checkKeyUsage(cert, KU_SIGNATURE) == false) {
|
||||
throw new ValidatorException
|
||||
("KeyUsage does not allow digital signatures",
|
||||
@@ -376,7 +369,5 @@
|
||||
// remove extensions we checked
|
||||
exts.remove(SimpleValidator.OID_KEY_USAGE);
|
||||
exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE);
|
||||
-
|
||||
- checkRemainingExtensions(exts);
|
||||
}
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/Validator.java 2018-09-18 09:17:15.173802539 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/Validator.java 2018-09-18 09:17:34.745909443 +0200
|
||||
@@ -143,6 +143,7 @@
|
||||
*/
|
||||
public final static String VAR_PLUGIN_CODE_SIGNING = "plugin code signing";
|
||||
|
||||
+ private final String type;
|
||||
final EndEntityChecker endEntityChecker;
|
||||
final String variant;
|
||||
|
||||
@@ -154,6 +155,7 @@
|
||||
volatile Date validationDate;
|
||||
|
||||
Validator(String type, String variant) {
|
||||
+ this.type = type;
|
||||
this.variant = variant;
|
||||
endEntityChecker = EndEntityChecker.getInstance(type, variant);
|
||||
}
|
||||
@@ -261,7 +263,16 @@
|
||||
|
||||
// omit EE extension check if EE cert is also trust anchor
|
||||
if (chain.length > 1) {
|
||||
- endEntityChecker.check(chain[0], parameter);
|
||||
+ // EndEntityChecker does not need to check unresolved critical
|
||||
+ // extensions when validating with a TYPE_PKIX Validator.
|
||||
+ // A TYPE_PKIX Validator will already have run checks on all
|
||||
+ // certs' extensions, including checks by any PKIXCertPathCheckers
|
||||
+ // included in the PKIXParameters, so the extra checks would be
|
||||
+ // redundant.
|
||||
+ boolean checkUnresolvedCritExts =
|
||||
+ (type == TYPE_PKIX) ? false : true;
|
||||
+ endEntityChecker.check(chain[0], parameter,
|
||||
+ checkUnresolvedCritExts);
|
||||
}
|
||||
|
||||
return chain;
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/security/validator/EndEntityExtensionCheck.java Fri Feb 16 09:43:14 2018 -0800
|
||||
@@ -0,0 +1,221 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2015, 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 8076117
|
||||
+ * @summary EndEntityChecker should not process custom extensions
|
||||
+ * after PKIX validation
|
||||
+ */
|
||||
+
|
||||
+import java.io.ByteArrayInputStream;
|
||||
+import java.io.File;
|
||||
+import java.io.FileInputStream;
|
||||
+import java.security.KeyStore;
|
||||
+import java.security.cert.CertPathValidatorException;
|
||||
+import java.security.cert.Certificate;
|
||||
+import java.security.cert.CertificateException;
|
||||
+import java.security.cert.CertificateFactory;
|
||||
+import java.security.cert.PKIXBuilderParameters;
|
||||
+import java.security.cert.PKIXCertPathChecker;
|
||||
+import java.security.cert.TrustAnchor;
|
||||
+import java.security.cert.X509Certificate;
|
||||
+import java.util.Collection;
|
||||
+import java.util.Date;
|
||||
+import java.util.HashSet;
|
||||
+import java.util.Set;
|
||||
+import sun.security.validator.KeyStores;
|
||||
+import sun.security.validator.Validator;
|
||||
+
|
||||
+
|
||||
+public class EndEntityExtensionCheck {
|
||||
+
|
||||
+ /*
|
||||
+ * Owner: CN=TestCA
|
||||
+ * Issuer: CN=TestCA
|
||||
+ */
|
||||
+ private static final String CA =
|
||||
+ "-----BEGIN CERTIFICATE-----\n" +
|
||||
+ "MIICgDCCAj2gAwIBAgIEC18hWjALBgcqhkjOOAQDBQAwETEPMA0GA1UEAxMGVGVz\n" +
|
||||
+ "dENBMB4XDTE1MDQwNzIyMzUyMFoXDTI1MDQwNjIyMzUyMFowETEPMA0GA1UEAxMG\n" +
|
||||
+ "VGVzdENBMIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2\n" +
|
||||
+ "EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr\n" +
|
||||
+ "mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXz\n" +
|
||||
+ "rith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+Gghdab\n" +
|
||||
+ "Pd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo\n" +
|
||||
+ "FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhR\n" +
|
||||
+ "kImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAJOWy2hVy4iNwsi/idWG\n" +
|
||||
+ "oksr9IZxQIFR2YavoUmD+rIgfYUpiCihzftDLMMaNYqp9PPxuOyoIPGPbwmKpAs5\n" +
|
||||
+ "nq6gLwH2lSsN+EwyV2SJ0J26PHiMuRNZWWfKR3cpEqbQVb0CmvqSpj8zYfamPzp7\n" +
|
||||
+ "eXSWwahzgLCGJM3SgCfDFC0uoyEwHzAdBgNVHQ4EFgQU7tLD8FnWM+r6jBr+mCXs\n" +
|
||||
+ "8G5yBpgwCwYHKoZIzjgEAwUAAzAAMC0CFQCHCtzC3S0ST0EZBucikVui4WXD8QIU\n" +
|
||||
+ "L3Oxy6989/FhZlZWJlhqc1ungEQ=\n" +
|
||||
+ "-----END CERTIFICATE-----";
|
||||
+
|
||||
+ /*
|
||||
+ * Owner: CN=TestEE
|
||||
+ * Issuer: CN=TestCA
|
||||
+ * Contains a custom critical extension with OID 1.2.3.4:
|
||||
+ * #1: ObjectId: 1.2.3.4 Criticality=true
|
||||
+ * 0000: 00 00
|
||||
+ */
|
||||
+ private static final String EE =
|
||||
+ "-----BEGIN CERTIFICATE-----\n" +
|
||||
+ "MIICrTCCAmugAwIBAgIELjciKzALBgcqhkjOOAQDBQAwETEPMA0GA1UEAxMGVGVz\n" +
|
||||
+ "dENBMB4XDTE1MDQwNzIzMDA1OFoXDTE1MDcwNjIzMDA1OFowETEPMA0GA1UEAxMG\n" +
|
||||
+ "VGVzdEVFMIIBtzCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2\n" +
|
||||
+ "EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr\n" +
|
||||
+ "mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXz\n" +
|
||||
+ "rith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+Gghdab\n" +
|
||||
+ "Pd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo\n" +
|
||||
+ "FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhR\n" +
|
||||
+ "kImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYQAAoGAN97otrAJEuUg/O97vScI\n" +
|
||||
+ "01xs1jqTz5o0PGpKiDDJNB3tCCUbLqXoBQBvSefQ8vYL3mmlEJLxlwfbajRmJQp0\n" +
|
||||
+ "tUy5SUCZHk3MdoKxSvrqYnVpYwJHFXKWs6lAawxfuWbkm9SREuepOWnVzy2ecf5z\n" +
|
||||
+ "hvy9mgEBfi4E9Cy8Byq2TpyjUDBOMAwGAyoDBAEB/wQCAAAwHwYDVR0jBBgwFoAU\n" +
|
||||
+ "7tLD8FnWM+r6jBr+mCXs8G5yBpgwHQYDVR0OBBYEFNRVqt5F+EAuJ5x1IZLDkoMs\n" +
|
||||
+ "mDj4MAsGByqGSM44BAMFAAMvADAsAhQyNGhxIp5IshN1zqLs4pUY214IMAIUMmTL\n" +
|
||||
+ "3ZMpMAjITbuHHlFNUqZ7A9s=\n" +
|
||||
+ "-----END CERTIFICATE-----";
|
||||
+
|
||||
+ public static void main(String[] args) throws Exception {
|
||||
+ X509Certificate[] chain = createChain();
|
||||
+
|
||||
+ /* Test 1: Test SimpleValidator
|
||||
+ * SimpleValidator doesn't check for unsupported critical
|
||||
+ * extensions in the end entity certificate, and leaves that up
|
||||
+ * to EndEntityChecker, which should catch such extensions.
|
||||
+ */
|
||||
+ KeyStore ks = KeyStore.getInstance("JKS");
|
||||
+ ks.load(null, null);
|
||||
+ ks.setCertificateEntry("testca", chain[chain.length - 1]);
|
||||
+
|
||||
+ Validator v = Validator.getInstance(Validator.TYPE_SIMPLE,
|
||||
+ Validator.VAR_TLS_CLIENT,
|
||||
+ KeyStores.getTrustedCerts(ks));
|
||||
+ try {
|
||||
+ v.validate(chain);
|
||||
+ throw new Exception("Chain should not have validated " +
|
||||
+ "successfully.");
|
||||
+ } catch (CertificateException ex) {
|
||||
+ // EE cert has an unsupported critical extension that is not
|
||||
+ // checked by SimpleValidator's extension checks, so this
|
||||
+ // failure is expected
|
||||
+ }
|
||||
+
|
||||
+ /* Test 2: Test PKIXValidator without custom checker
|
||||
+ * PKIXValidator accepts PKIXParameters that can contain
|
||||
+ * custom PKIXCertPathCheckers, which would be run against
|
||||
+ * each cert in the chain, including EE certs.
|
||||
+ * Check that if PKIXValidator is not provided a custom
|
||||
+ * PKIXCertPathChecker for an unknown critical extension in
|
||||
+ * the EE cert, chain validation will fail.
|
||||
+ */
|
||||
+ TrustAnchor ta = new TrustAnchor(chain[chain.length - 1], null);
|
||||
+ Set<TrustAnchor> tas = new HashSet<>();
|
||||
+ tas.add(ta);
|
||||
+ PKIXBuilderParameters params = new PKIXBuilderParameters(tas, null);
|
||||
+ params.setDate(new Date(115, 5, 1)); // 2015-05-01
|
||||
+ params.setRevocationEnabled(false);
|
||||
+
|
||||
+ v = Validator.getInstance(Validator.TYPE_PKIX,
|
||||
+ Validator.VAR_TLS_CLIENT,
|
||||
+ params);
|
||||
+ try {
|
||||
+ v.validate(chain);
|
||||
+ throw new Exception("Chain should not have validated " +
|
||||
+ "successfully.");
|
||||
+ } catch (CertificateException ex) {
|
||||
+ // EE cert has an unsupported critical extension and
|
||||
+ // PKIXValidator was not provided any custom checker
|
||||
+ // for it, so this failure ie expected.
|
||||
+ }
|
||||
+
|
||||
+ /* Test 3: Test PKIXValidator with custom checker
|
||||
+ * Check that PKIXValidator will successfully validate a chain
|
||||
+ * containing an EE cert with a critical custom extension, given
|
||||
+ * a corresponding PKIXCertPathChecker for the extension.
|
||||
+ */
|
||||
+ params = new PKIXBuilderParameters(tas, null);
|
||||
+ params.addCertPathChecker(new CustomChecker());
|
||||
+ params.setDate(new Date(115, 5, 1)); // 2015-05-01
|
||||
+ params.setRevocationEnabled(false);
|
||||
+
|
||||
+ v = Validator.getInstance(Validator.TYPE_PKIX,
|
||||
+ Validator.VAR_TLS_CLIENT,
|
||||
+ params);
|
||||
+ v.validate(chain); // This should validate successfully
|
||||
+
|
||||
+ System.out.println("Tests passed.");
|
||||
+ }
|
||||
+
|
||||
+ public static X509Certificate[] createChain() throws Exception {
|
||||
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||
+ X509Certificate ee = (X509Certificate)
|
||||
+ cf.generateCertificate((new ByteArrayInputStream(EE.getBytes())));
|
||||
+ X509Certificate ca = (X509Certificate)
|
||||
+ cf.generateCertificate((new ByteArrayInputStream(CA.getBytes())));
|
||||
+
|
||||
+ X509Certificate[] chain = {ee, ca};
|
||||
+ return chain;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * A custom PKIXCertPathChecker. Looks for a critical extension
|
||||
+ * in an end entity certificate with the OID 1.2.3.4.
|
||||
+ */
|
||||
+ static class CustomChecker extends PKIXCertPathChecker {
|
||||
+
|
||||
+ @Override
|
||||
+ public void init(boolean forward) throws CertPathValidatorException {
|
||||
+ // nothing to do
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isForwardCheckingSupported() {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Set<String> getSupportedExtensions() {
|
||||
+ Set<String> exts = new HashSet<>();
|
||||
+ exts.add("1.2.3.4");
|
||||
+ return exts;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void check(Certificate cert,
|
||||
+ Collection<String> unresolvedCritExts)
|
||||
+ throws CertPathValidatorException {
|
||||
+ X509Certificate currCert = (X509Certificate)cert;
|
||||
+ // check that this is an EE cert
|
||||
+ if (currCert.getBasicConstraints() == -1) {
|
||||
+ if (unresolvedCritExts != null &&
|
||||
+ !unresolvedCritExts.isEmpty()) {
|
||||
+ unresolvedCritExts.remove("1.2.3.4");
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+}
|
@ -1,11 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java 2018-09-18 09:22:44.275591748 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java 2018-09-18 09:29:52.621918745 +0200
|
||||
@@ -29,7 +29,7 @@
|
||||
* @run main/timeout=300 SupportedDSAParamGen 1024 160
|
||||
* @run main/timeout=300 SupportedDSAParamGen 2048 224
|
||||
* @run main/timeout=300 SupportedDSAParamGen 2048 256
|
||||
- * @run main/timeout=450 SupportedDSAParamGen 3072 256
|
||||
+ * @run main/timeout=700 SupportedDSAParamGen 3072 256
|
||||
*/
|
||||
import java.security.*;
|
||||
import java.security.spec.*;
|
@ -1,11 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/library_call.cpp 2018-09-18 09:31:47.690543877 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/library_call.cpp 2018-09-18 09:32:09.874664406 +0200
|
||||
@@ -6026,7 +6026,7 @@
|
||||
}
|
||||
|
||||
assert(UseMontgomeryMultiplyIntrinsic, "not implemented on this platform");
|
||||
- const char* stubName = "montgomery_square";
|
||||
+ const char* stubName = "montgomery_multiply";
|
||||
|
||||
assert(callee()->signature()->size() == 7, "montgomeryMultiply has 7 parameters");
|
||||
|
@ -1,16 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java 2018-09-18 09:32:55.266910998 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java 2018-09-18 09:34:25.091398982 +0200
|
||||
@@ -308,6 +308,13 @@
|
||||
EnumSet.of(CryptoPrimitive.KEY_AGREEMENT),
|
||||
suite.name, null)) {
|
||||
suites.add(suite);
|
||||
+ } else {
|
||||
+ if (debug != null && Debug.isOn("sslctx") &&
|
||||
+ Debug.isOn("verbose")) {
|
||||
+ System.out.println(
|
||||
+ "Ignoring disabled cipher suite: " +
|
||||
+ suite.name);
|
||||
+ }
|
||||
}
|
||||
} else if (debug != null &&
|
||||
Debug.isOn("sslctx") && Debug.isOn("verbose")) {
|
@ -1,37 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/java/security/SignedObject/Chain.java 2018-09-18 09:35:10.475645535 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/java/security/SignedObject/Chain.java 2018-09-18 09:36:00.147915474 +0200
|
||||
@@ -142,8 +142,17 @@
|
||||
PrivateKey[] privKeys = new PrivateKey[N];
|
||||
PublicKey[] pubKeys = new PublicKey[N];
|
||||
PublicKey[] anotherPubKeys = new PublicKey[N];
|
||||
- KeyPairGenerator kpg = KeyPairGenerator.getInstance(
|
||||
- test.keyAlg.name);
|
||||
+ Signature signature;
|
||||
+ KeyPairGenerator kpg;
|
||||
+ if (test.provider != Provider.Default) {
|
||||
+ signature = Signature.getInstance(test.sigAlg.name,
|
||||
+ test.provider.name);
|
||||
+ kpg = KeyPairGenerator.getInstance(
|
||||
+ test.keyAlg.name, test.provider.name);
|
||||
+ } else {
|
||||
+ signature = Signature.getInstance(test.sigAlg.name);
|
||||
+ kpg = KeyPairGenerator.getInstance(test.keyAlg.name);
|
||||
+ }
|
||||
for (int j=0; j < N; j++) {
|
||||
if (test.keySize != -1) {
|
||||
kpg.initialize(test.keySize);
|
||||
@@ -162,14 +171,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- Signature signature;
|
||||
- if (test.provider != Provider.Default) {
|
||||
- signature = Signature.getInstance(test.sigAlg.name,
|
||||
- test.provider.name);
|
||||
- } else {
|
||||
- signature = Signature.getInstance(test.sigAlg.name);
|
||||
- }
|
||||
-
|
||||
// Create a chain of signed objects
|
||||
SignedObject[] objects = new SignedObject[N];
|
||||
objects[0] = new SignedObject(str, privKeys[0], signature);
|
@ -1,10 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp 2018-09-18 09:36:56.656222554 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp 2018-09-18 09:40:29.073376896 +0200
|
||||
@@ -1809,6 +1809,7 @@
|
||||
"new = 0x%08X",
|
||||
GetHWnd(), GetClassName(), (UINT)lParam);
|
||||
mr = WmInputLangChange(static_cast<UINT>(wParam), reinterpret_cast<HKL>(lParam));
|
||||
+ g_bUserHasChangedInputLang = TRUE;
|
||||
CallProxyDefWindowProc(message, wParam, lParam, retValue, mr);
|
||||
// should return non-zero if we process this message
|
||||
retValue = 1;
|
@ -1,12 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/ifnode.cpp 2018-09-18 09:41:17.285638920 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/ifnode.cpp 2018-09-18 09:42:24.554004489 +0200
|
||||
@@ -453,6 +453,9 @@
|
||||
// offset. Return 2 if we had to negate the test. Index is NULL if the check
|
||||
// is versus a constant.
|
||||
int IfNode::is_range_check(Node* &range, Node* &index, jint &offset) {
|
||||
+ if (outcnt() != 2) {
|
||||
+ return 0;
|
||||
+ }
|
||||
Node* b = in(1);
|
||||
if (b == NULL || !b->is_Bool()) return 0;
|
||||
BoolNode* bn = b->as_Bool();
|
@ -1,41 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/awt/Desktop.java 2018-09-18 09:42:59.506194441 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/awt/Desktop.java 2018-09-18 09:43:52.086480202 +0200
|
||||
@@ -203,14 +203,10 @@
|
||||
* @throws IllegalArgumentException if file doesn't exist
|
||||
*/
|
||||
private static void checkFileValidation(File file){
|
||||
- if (file == null) throw new NullPointerException("File must not be null");
|
||||
-
|
||||
if (!file.exists()) {
|
||||
throw new IllegalArgumentException("The file: "
|
||||
+ file.getPath() + " doesn't exist.");
|
||||
}
|
||||
-
|
||||
- file.canRead();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -264,6 +260,7 @@
|
||||
* @see java.awt.AWTPermission
|
||||
*/
|
||||
public void open(File file) throws IOException {
|
||||
+ file = new File(file.getPath());
|
||||
checkAWTPermission();
|
||||
checkExec();
|
||||
checkActionSupport(Action.OPEN);
|
||||
@@ -295,6 +292,7 @@
|
||||
* @see java.awt.AWTPermission
|
||||
*/
|
||||
public void edit(File file) throws IOException {
|
||||
+ file = new File(file.getPath());
|
||||
checkAWTPermission();
|
||||
checkExec();
|
||||
checkActionSupport(Action.EDIT);
|
||||
@@ -325,6 +323,7 @@
|
||||
* allowed to create a subprocess
|
||||
*/
|
||||
public void print(File file) throws IOException {
|
||||
+ file = new File(file.getPath());
|
||||
checkExec();
|
||||
SecurityManager sm = System.getSecurityManager();
|
||||
if (sm != null) {
|
600
8193419.patch
600
8193419.patch
@ -1,600 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/native/common/jni_util.h 2018-09-18 09:42:59.678195376 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/native/common/jni_util.h 2018-09-18 09:45:28.239002753 +0200
|
||||
@@ -297,6 +297,22 @@
|
||||
} \
|
||||
} while (0) \
|
||||
|
||||
+#define CHECK_NULL_THROW_NPE(env, x, msg) \
|
||||
+ do { \
|
||||
+ if ((x) == NULL) { \
|
||||
+ JNU_ThrowNullPointerException((env), (msg));\
|
||||
+ return; \
|
||||
+ } \
|
||||
+ } while(0) \
|
||||
+
|
||||
+#define CHECK_NULL_THROW_NPE_RETURN(env, x, msg, z)\
|
||||
+ do { \
|
||||
+ if ((x) == NULL) { \
|
||||
+ JNU_ThrowNullPointerException((env), (msg));\
|
||||
+ return (z); \
|
||||
+ } \
|
||||
+ } while(0) \
|
||||
+
|
||||
#define CHECK_NULL_RETURN(x, y) \
|
||||
do { \
|
||||
if ((x) == NULL) { \
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/native/java/net/net_util.c 2018-09-18 09:42:59.682195399 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/native/java/net/net_util.c 2018-09-18 09:45:28.239002753 +0200
|
||||
@@ -163,32 +163,38 @@
|
||||
|
||||
void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) {
|
||||
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
||||
+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null");
|
||||
(*env)->SetIntField(env, holder, iac_addressID, address);
|
||||
}
|
||||
|
||||
void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) {
|
||||
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
||||
+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null");
|
||||
(*env)->SetIntField(env, holder, iac_familyID, family);
|
||||
}
|
||||
|
||||
void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) {
|
||||
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
||||
+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null");
|
||||
(*env)->SetObjectField(env, holder, iac_hostNameID, host);
|
||||
(*env)->SetObjectField(env, holder, iac_origHostNameID, host);
|
||||
}
|
||||
|
||||
int getInetAddress_addr(JNIEnv *env, jobject iaObj) {
|
||||
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
||||
+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1);
|
||||
return (*env)->GetIntField(env, holder, iac_addressID);
|
||||
}
|
||||
|
||||
int getInetAddress_family(JNIEnv *env, jobject iaObj) {
|
||||
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
||||
+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1);
|
||||
return (*env)->GetIntField(env, holder, iac_familyID);
|
||||
}
|
||||
|
||||
jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj) {
|
||||
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
||||
+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", NULL);
|
||||
return (*env)->GetObjectField(env, holder, iac_hostNameID);
|
||||
}
|
||||
|
||||
@@ -209,7 +215,9 @@
|
||||
CHECK_NULL_RETURN(iaObj, NULL);
|
||||
address = NET_IPv4MappedToIPv4(caddr);
|
||||
setInetAddress_addr(env, iaObj, address);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
setInetAddress_family(env, iaObj, IPv4);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
} else {
|
||||
jint scope;
|
||||
jboolean ret;
|
||||
@@ -219,6 +227,7 @@
|
||||
if (ret == JNI_FALSE)
|
||||
return NULL;
|
||||
setInetAddress_family(env, iaObj, IPv6);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
scope = getScopeID(him);
|
||||
setInet6Address_scopeid(env, iaObj, scope);
|
||||
}
|
||||
@@ -230,7 +239,9 @@
|
||||
iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID);
|
||||
CHECK_NULL_RETURN(iaObj, NULL);
|
||||
setInetAddress_family(env, iaObj, IPv4);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
setInetAddress_addr(env, iaObj, ntohl(him4->sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
*port = ntohs(him4->sin_port);
|
||||
}
|
||||
return iaObj;
|
||||
@@ -243,6 +254,7 @@
|
||||
|
||||
#ifdef AF_INET6
|
||||
family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6;
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
|
||||
if (him->sa_family == AF_INET6) {
|
||||
#ifdef WIN32
|
||||
struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
|
||||
@@ -258,6 +270,7 @@
|
||||
}
|
||||
addrNew = NET_IPv4MappedToIPv4(caddrNew);
|
||||
addrCur = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
|
||||
if (addrNew == addrCur) {
|
||||
return JNI_TRUE;
|
||||
} else {
|
||||
@@ -288,6 +301,7 @@
|
||||
}
|
||||
addrNew = ntohl(him4->sin_addr.s_addr);
|
||||
addrCur = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
|
||||
if (addrNew == addrCur) {
|
||||
return JNI_TRUE;
|
||||
} else {
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2018-09-18 09:42:59.458194181 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2018-09-18 09:45:28.239002753 +0200
|
||||
@@ -236,7 +236,11 @@
|
||||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr));
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, name);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj);
|
||||
i++;
|
||||
iterator = iterator->ai_next;
|
||||
@@ -479,7 +483,11 @@
|
||||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, i++, iaObj);
|
||||
iterator = iterator->ai_next;
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2018-09-18 09:42:59.458194181 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2018-09-18 09:45:28.239002753 +0200
|
||||
@@ -226,6 +226,8 @@
|
||||
return NULL;
|
||||
}
|
||||
setInetAddress_hostName(env, o, name);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto done;
|
||||
(*env)->SetObjectArrayElement(env, result, index, o);
|
||||
(*env)->DeleteLocalRef(env, o);
|
||||
}
|
||||
@@ -416,7 +418,11 @@
|
||||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
|
||||
inetIndex++;
|
||||
} else if (iterator->ai_family == AF_INET6) {
|
||||
@@ -438,6 +444,8 @@
|
||||
setInet6Address_scopeid(env, iaObj, scope);
|
||||
}
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
|
||||
inet6Index++;
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/net_util_md.c 2018-09-18 09:42:59.458194181 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/net_util_md.c 2018-09-18 09:45:28.243002775 +0200
|
||||
@@ -807,6 +807,7 @@
|
||||
int *len, jboolean v4MappedAddress) {
|
||||
jint family;
|
||||
family = getInetAddress_family(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
#ifdef AF_INET6
|
||||
/* needs work. 1. family 2. clean up him6 etc deallocate memory */
|
||||
if (ipv6_available() && !(family == IPv4 && v4MappedAddress == JNI_FALSE)) {
|
||||
@@ -818,6 +819,7 @@
|
||||
if (family == IPv4) { /* will convert to IPv4-mapped address */
|
||||
memset((char *) caddr, 0, 16);
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
if (address == INADDR_ANY) {
|
||||
/* we would always prefer IPv6 wildcard address
|
||||
caddr[10] = 0xff;
|
||||
@@ -926,6 +928,7 @@
|
||||
}
|
||||
memset((char *) him4, 0, sizeof(struct sockaddr_in));
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
him4->sin_port = htons((short) port);
|
||||
him4->sin_addr.s_addr = (uint32_t) htonl(address);
|
||||
him4->sin_family = AF_INET;
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2018-09-18 09:42:59.458194181 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2018-09-18 09:45:28.239002753 +0200
|
||||
@@ -332,14 +332,14 @@
|
||||
(JNIEnv *env, jclass cls, jobject iaObj)
|
||||
{
|
||||
netif *ifs, *curr;
|
||||
+ jobject obj = NULL;
|
||||
+ jboolean match = JNI_FALSE;
|
||||
#if defined(AF_INET6)
|
||||
int family = (getInetAddress_family(env, iaObj) == IPv4) ? AF_INET : AF_INET6;
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
#else
|
||||
int family = AF_INET;
|
||||
#endif
|
||||
- jobject obj = NULL;
|
||||
- jboolean match = JNI_FALSE;
|
||||
-
|
||||
ifs = enumInterfaces(env);
|
||||
if (ifs == NULL) {
|
||||
return NULL;
|
||||
@@ -357,7 +357,7 @@
|
||||
int address1 = htonl(
|
||||
((struct sockaddr_in *)addrP->addr)->sin_addr.s_addr);
|
||||
int address2 = getInetAddress_addr(env, iaObj);
|
||||
-
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
if (address1 == address2) {
|
||||
match = JNI_TRUE;
|
||||
break;
|
||||
@@ -703,6 +703,7 @@
|
||||
if (iaObj) {
|
||||
setInetAddress_addr(env, iaObj, htonl(
|
||||
((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
@@ -715,6 +716,7 @@
|
||||
if (ia2Obj) {
|
||||
setInetAddress_addr(env, ia2Obj, htonl(
|
||||
((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
(*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj);
|
||||
} else {
|
||||
return NULL;
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:42:59.458194181 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:46:37.219377628 +0200
|
||||
@@ -552,12 +552,15 @@
|
||||
iaObj = NET_SockaddrToInetAddress(env, (struct sockaddr *)&remote_addr, &port);
|
||||
#ifdef AF_INET6
|
||||
family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6;
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
#else
|
||||
family = AF_INET;
|
||||
#endif
|
||||
if (family == AF_INET) { /* this API can't handle IPV6 addresses */
|
||||
int address = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
setInetAddress_addr(env, addressObj, address);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
}
|
||||
return port;
|
||||
}
|
||||
@@ -1072,7 +1075,9 @@
|
||||
for (i = 0; i < len; i++) {
|
||||
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
|
||||
if (getInetAddress_family(env, addr) == IPv4) {
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
in.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1126,6 +1131,7 @@
|
||||
|
||||
in.s_addr = htonl( getInetAddress_addr(env, value) );
|
||||
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF,
|
||||
(const char*)&in, sizeof(in)) < 0) {
|
||||
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
|
||||
@@ -1492,6 +1498,7 @@
|
||||
CHECK_NULL_RETURN(addr, NULL);
|
||||
|
||||
setInetAddress_addr(env, addr, ntohl(in.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
|
||||
/*
|
||||
* For IP_MULTICAST_IF return InetAddress
|
||||
@@ -1954,6 +1961,7 @@
|
||||
|
||||
#ifdef __linux__
|
||||
if (getInetAddress_family(env, iaObj) == IPv4) {
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
ipv6_join_leave = JNI_FALSE;
|
||||
}
|
||||
#endif
|
||||
@@ -2001,6 +2009,7 @@
|
||||
}
|
||||
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
mname.imr_address.s_addr = 0;
|
||||
mname.imr_ifindex = (*env)->GetIntField(env, niObj, ni_indexID);
|
||||
mname_len = sizeof(struct ip_mreqn);
|
||||
@@ -2019,10 +2028,13 @@
|
||||
addr = (*env)->GetObjectArrayElement(env, addrArray, 0);
|
||||
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
#ifdef __linux__
|
||||
mname.imr_address.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
#else
|
||||
mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
#endif
|
||||
mname_len = sizeof(struct ip_mreq);
|
||||
}
|
||||
@@ -2058,6 +2070,7 @@
|
||||
}
|
||||
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
mname.imr_address.s_addr = 0 ;
|
||||
mname.imr_ifindex = index;
|
||||
mname_len = sizeof(struct ip_mreqn);
|
||||
@@ -2080,6 +2093,7 @@
|
||||
mname.imr_interface.s_addr = in.s_addr;
|
||||
#endif
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
mname_len = sizeof(struct ip_mreq);
|
||||
}
|
||||
}
|
||||
@@ -2145,10 +2159,12 @@
|
||||
jint family;
|
||||
jint address;
|
||||
family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6;
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (family == AF_INET) { /* will convert to IPv4-mapped address */
|
||||
memset((char *) caddr, 0, 16);
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
caddr[10] = 0xff;
|
||||
caddr[11] = 0xff;
|
||||
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c 2018-09-18 09:45:28.243002775 +0200
|
||||
@@ -195,6 +195,8 @@
|
||||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(address));
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, 0, iaObj);
|
||||
JNU_ReleaseStringPlatformChars(env, host, hostname);
|
||||
return ret;
|
||||
@@ -228,7 +230,11 @@
|
||||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr));
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, i, iaObj);
|
||||
addrp++;
|
||||
i++;
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c 2018-09-18 09:45:28.243002775 +0200
|
||||
@@ -219,7 +219,11 @@
|
||||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
|
||||
inetIndex ++;
|
||||
} else if (iterator->ai_family == AF_INET6) {
|
||||
@@ -240,6 +244,8 @@
|
||||
setInet6Address_scopeid(env, iaObj, scope);
|
||||
}
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
+ if ((*env)->ExceptionCheck(env))
|
||||
+ goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
|
||||
inet6Index ++;
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/net_util_md.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/net_util_md.c 2018-09-18 09:45:28.247002797 +0200
|
||||
@@ -875,6 +875,7 @@
|
||||
int *len, jboolean v4MappedAddress) {
|
||||
jint family, iafam;
|
||||
iafam = getInetAddress_family(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
family = (iafam == IPv4)? AF_INET : AF_INET6;
|
||||
if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) {
|
||||
struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
|
||||
@@ -885,6 +886,7 @@
|
||||
if (family == AF_INET) { /* will convert to IPv4-mapped address */
|
||||
memset((char *) caddr, 0, 16);
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
if (address == INADDR_ANY) {
|
||||
/* we would always prefer IPv6 wildcard address
|
||||
caddr[10] = 0xff;
|
||||
@@ -923,6 +925,7 @@
|
||||
}
|
||||
memset((char *) him4, 0, sizeof(struct sockaddr_in));
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
him4->sin_port = htons((short) port);
|
||||
him4->sin_addr.s_addr = (u_long) htonl(address);
|
||||
him4->sin_family = AF_INET;
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c 2018-09-18 09:45:28.243002775 +0200
|
||||
@@ -593,6 +593,7 @@
|
||||
/* default ctor will set family to AF_INET */
|
||||
|
||||
setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
if (addrs->mask != -1) {
|
||||
ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
|
||||
if (ibObj == NULL) {
|
||||
@@ -606,6 +607,7 @@
|
||||
return NULL;
|
||||
}
|
||||
setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
(*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
|
||||
(*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
|
||||
(*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
|
||||
@@ -761,8 +763,9 @@
|
||||
(JNIEnv *env, jclass cls, jobject iaObj)
|
||||
{
|
||||
netif *ifList, *curr;
|
||||
- jint addr = getInetAddress_addr(env, iaObj);
|
||||
jobject netifObj = NULL;
|
||||
+ jint addr = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
|
||||
// Retained for now to support IPv4 only stack, java.net.preferIPv4Stack
|
||||
if (ipv6_available()) {
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2018-09-18 09:45:28.243002775 +0200
|
||||
@@ -545,6 +545,7 @@
|
||||
|
||||
setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr));
|
||||
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
|
||||
if (ibObj == NULL) {
|
||||
free_netaddr(netaddrP);
|
||||
@@ -557,6 +558,7 @@
|
||||
return NULL;
|
||||
}
|
||||
setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
(*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
|
||||
(*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
|
||||
(*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2018-09-18 09:45:28.247002797 +0200
|
||||
@@ -439,12 +439,13 @@
|
||||
memset((char *)&lcladdr, 0, sizeof(lcladdr));
|
||||
|
||||
family = getInetAddress_family(env, addressObj);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (family == IPv6 && !ipv6_supported) {
|
||||
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
|
||||
"Protocol family not supported");
|
||||
return;
|
||||
}
|
||||
-
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (IS_NULL(fdObj) || (ipv6_supported && IS_NULL(fd1Obj))) {
|
||||
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "socket closed");
|
||||
return;
|
||||
@@ -459,6 +460,7 @@
|
||||
return;
|
||||
} else {
|
||||
address = getInetAddress_addr(env, addressObj);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
}
|
||||
|
||||
if (NET_InetAddressToSockaddr(env, addressObj, port, (struct sockaddr *)&lcladdr, &lcladdrlen, JNI_FALSE) != 0) {
|
||||
@@ -562,8 +564,9 @@
|
||||
}
|
||||
|
||||
addr = getInetAddress_addr(env, address);
|
||||
-
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
family = getInetAddress_family(env, address);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (family == IPv6 && !ipv6_supported) {
|
||||
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
|
||||
"Protocol family not supported");
|
||||
@@ -681,6 +684,7 @@
|
||||
}
|
||||
|
||||
family = getInetAddress_family(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (family == IPv4) {
|
||||
fdObj = (*env)->GetObjectField(env, this, pdsi_fdID);
|
||||
} else {
|
||||
@@ -731,6 +735,7 @@
|
||||
* Check is not necessary on these OSes */
|
||||
if (connected) {
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
} else {
|
||||
address = ntohl(rmtaddr.him4.sin_addr.s_addr);
|
||||
}
|
||||
@@ -835,6 +840,7 @@
|
||||
return -1;
|
||||
} else {
|
||||
address = getInetAddress_addr(env, addressObj);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
/* We only handle IPv4 for now. Will support IPv6 once its in the os */
|
||||
family = AF_INET;
|
||||
}
|
||||
@@ -909,7 +915,9 @@
|
||||
return 0;
|
||||
}
|
||||
setInetAddress_addr(env, addressObj, ntohl(remote_addr.sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
setInetAddress_family(env, addressObj, IPv4);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
|
||||
/* return port */
|
||||
return ntohs(remote_addr.sin_port);
|
||||
@@ -1601,6 +1609,7 @@
|
||||
int fam;
|
||||
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
|
||||
fam = getInetAddress_family(env, addr);
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
if (fam == family) {
|
||||
*iaddr = addr;
|
||||
return 0;
|
||||
@@ -1619,6 +1628,7 @@
|
||||
}
|
||||
|
||||
iaddr->s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1724,6 +1734,7 @@
|
||||
struct in_addr in;
|
||||
|
||||
in.s_addr = htonl(getInetAddress_addr(env, value));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF,
|
||||
(const char*)&in, sizeof(in)) < 0) {
|
||||
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
|
||||
@@ -1965,7 +1976,7 @@
|
||||
CHECK_NULL_RETURN(addr, NULL);
|
||||
|
||||
setInetAddress_addr(env, addr, ntohl(in.s_addr));
|
||||
-
|
||||
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
/*
|
||||
* For IP_MULTICAST_IF return InetAddress
|
||||
*/
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2018-09-18 09:42:59.698195486 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2018-09-18 09:45:28.247002797 +0200
|
||||
@@ -413,6 +413,7 @@
|
||||
fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID);
|
||||
|
||||
family = getInetAddress_family(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
|
||||
if (family == IPv6 && !ipv6_supported) {
|
||||
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
|
||||
@@ -729,7 +730,9 @@
|
||||
}
|
||||
|
||||
setInetAddress_addr(env, socketAddressObj, ntohl(him.him4.sin_addr.s_addr));
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
setInetAddress_family(env, socketAddressObj, IPv4);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
(*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj);
|
||||
} else {
|
||||
/* AF_INET6 -> Inet6Address */
|
||||
@@ -756,6 +759,7 @@
|
||||
}
|
||||
setInet6Address_ipaddress(env, socketAddressObj, (char *)&him.him6.sin6_addr);
|
||||
setInetAddress_family(env, socketAddressObj, IPv6);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
setInet6Address_scopeid(env, socketAddressObj, him.him6.sin6_scope_id);
|
||||
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:49:08.188198047 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:49:25.544292368 +0200
|
||||
@@ -1045,6 +1045,7 @@
|
||||
struct in_addr in;
|
||||
jobjectArray addrArray;
|
||||
jsize len;
|
||||
+ jint family;
|
||||
jobject addr;
|
||||
int i;
|
||||
|
||||
@@ -1074,7 +1075,9 @@
|
||||
*/
|
||||
for (i = 0; i < len; i++) {
|
||||
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
|
||||
- if (getInetAddress_family(env, addr) == IPv4) {
|
||||
+ family = getInetAddress_family(env, addr);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
+ if (family == IPv4) {
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
in.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
@@ -1939,6 +1942,7 @@
|
||||
|
||||
jobject fdObj = (*env)->GetObjectField(env, this, pdsi_fdID);
|
||||
jint fd;
|
||||
+ jint family;
|
||||
jint ipv6_join_leave;
|
||||
|
||||
if (IS_NULL(fdObj)) {
|
||||
@@ -1960,7 +1964,9 @@
|
||||
ipv6_join_leave = ipv6_available();
|
||||
|
||||
#ifdef __linux__
|
||||
- if (getInetAddress_family(env, iaObj) == IPv4) {
|
||||
+ family = getInetAddress_family(env, iaObj);
|
||||
+ JNU_CHECK_EXCEPTION(env);
|
||||
+ if (family == IPv4) {
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
ipv6_join_leave = JNI_FALSE;
|
||||
}
|
239
8196491.patch
239
8196491.patch
@ -1,239 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/output/XMLStreamWriterOutput.java 2018-09-18 09:50:10.008533991 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/output/XMLStreamWriterOutput.java 2018-09-18 09:50:56.928788967 +0200
|
||||
@@ -33,6 +33,7 @@
|
||||
import javax.xml.stream.XMLStreamWriter;
|
||||
|
||||
import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;
|
||||
+import com.sun.xml.internal.bind.marshaller.NoEscapeHandler;
|
||||
import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
|
||||
import com.sun.xml.internal.bind.v2.runtime.XMLSerializer;
|
||||
|
||||
@@ -71,7 +72,7 @@
|
||||
}
|
||||
|
||||
CharacterEscapeHandler xmlStreamEscapeHandler = escapeHandler != null ?
|
||||
- escapeHandler : NewLineEscapeHandler.theInstance;
|
||||
+ escapeHandler : NoEscapeHandler.theInstance;
|
||||
|
||||
// otherwise the normal writer.
|
||||
return new XMLStreamWriterOutput(out, xmlStreamEscapeHandler);
|
||||
@@ -217,45 +218,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
- /**
|
||||
- * Performs character escaping only for new lines.
|
||||
- */
|
||||
- private static class NewLineEscapeHandler implements CharacterEscapeHandler {
|
||||
-
|
||||
- public static final NewLineEscapeHandler theInstance = new NewLineEscapeHandler();
|
||||
-
|
||||
- @Override
|
||||
- public void escape(char[] ch, int start, int length, boolean isAttVal, Writer out) throws IOException {
|
||||
- int limit = start+length;
|
||||
- int lastEscaped = start;
|
||||
-
|
||||
- for (int i = start; i < limit; i++) {
|
||||
- char c = ch[i];
|
||||
- if (c == '\r' || c == '\n') {
|
||||
- if (i != lastEscaped) {
|
||||
- out.write(ch, lastEscaped, i - lastEscaped);
|
||||
- }
|
||||
- lastEscaped = i + 1;
|
||||
- if (out instanceof XmlStreamOutWriterAdapter) {
|
||||
- try {
|
||||
- ((XmlStreamOutWriterAdapter)out).writeEntityRef("#x" + Integer.toHexString(c));
|
||||
- } catch (XMLStreamException e) {
|
||||
- throw new IOException("Error writing xml stream", e);
|
||||
- }
|
||||
- } else {
|
||||
- out.write("&#x");
|
||||
- out.write(Integer.toHexString(c));
|
||||
- out.write(';');
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- if (lastEscaped != limit) {
|
||||
- out.write(ch, lastEscaped, length - lastEscaped);
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
private static final class XmlStreamOutWriterAdapter extends Writer {
|
||||
|
||||
private final XMLStreamWriter writer;
|
||||
--- icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java 2018-09-18 09:50:10.028534099 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java 2018-09-18 09:50:56.928788967 +0200
|
||||
@@ -386,7 +386,7 @@
|
||||
|
||||
}
|
||||
|
||||
- private static class HasEncodingWriter extends XMLStreamWriterFilter implements HasEncoding {
|
||||
+ public static class HasEncodingWriter extends XMLStreamWriterFilter implements HasEncoding {
|
||||
private final String encoding;
|
||||
|
||||
HasEncodingWriter(XMLStreamWriter writer, String encoding) {
|
||||
@@ -399,7 +399,7 @@
|
||||
return encoding;
|
||||
}
|
||||
|
||||
- XMLStreamWriter getWriter() {
|
||||
+ public XMLStreamWriter getWriter() {
|
||||
return writer;
|
||||
}
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/streaming/XMLStreamWriterUtil.java 2018-09-18 09:50:10.044534187 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/streaming/XMLStreamWriterUtil.java 2018-09-18 09:50:56.928788967 +0200
|
||||
@@ -26,6 +26,7 @@
|
||||
package com.sun.xml.internal.ws.streaming;
|
||||
|
||||
import com.sun.istack.internal.Nullable;
|
||||
+import com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory;
|
||||
import com.sun.xml.internal.ws.encoding.HasEncoding;
|
||||
import com.sun.xml.internal.ws.encoding.SOAPBindingCodec;
|
||||
|
||||
@@ -57,9 +58,15 @@
|
||||
public static @Nullable OutputStream getOutputStream(XMLStreamWriter writer) throws XMLStreamException {
|
||||
Object obj = null;
|
||||
|
||||
+ XMLStreamWriter xmlStreamWriter =
|
||||
+ writer instanceof XMLStreamWriterFactory.HasEncodingWriter ?
|
||||
+ ((XMLStreamWriterFactory.HasEncodingWriter) writer).getWriter()
|
||||
+ : writer;
|
||||
+
|
||||
+
|
||||
// Hack for JDK6's SJSXP
|
||||
- if (writer instanceof Map) {
|
||||
- obj = ((Map) writer).get("sjsxp-outputstream");
|
||||
+ if (xmlStreamWriter instanceof Map) {
|
||||
+ obj = ((Map) xmlStreamWriter).get("sjsxp-outputstream");
|
||||
}
|
||||
|
||||
// woodstox
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/javax/xml/ws/8172297/Main.java 2018-09-18 09:50:09.468531057 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/javax/xml/ws/8172297/Main.java 2018-09-18 09:51:20.328916131 +0200
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
- * @bug 8172297
|
||||
+ * @bug 8172297 8196491
|
||||
* @summary Test that carriage-return and new-line characters
|
||||
* are preserved in webservice parameters
|
||||
* @compile ws/HelloWorld.java ws/HelloWorldImpl.java Main.java
|
||||
@@ -33,13 +33,21 @@
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.URL;
|
||||
+import java.util.Collections;
|
||||
+import java.util.Set;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
+import javax.xml.soap.SOAPMessage;
|
||||
import javax.xml.ws.Endpoint;
|
||||
import javax.xml.ws.Service;
|
||||
+import javax.xml.ws.handler.Handler;
|
||||
+import javax.xml.ws.handler.MessageContext;
|
||||
+import javax.xml.ws.handler.soap.SOAPHandler;
|
||||
+import javax.xml.ws.handler.soap.SOAPMessageContext;
|
||||
|
||||
import org.testng.Assert;
|
||||
+import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import ws.HelloWorld;
|
||||
@@ -47,9 +55,8 @@
|
||||
|
||||
public class Main {
|
||||
|
||||
- @Test
|
||||
- public void runTest() throws Exception {
|
||||
- //
|
||||
+ @Test(dataProvider="callHandlerDataProvider")
|
||||
+ public void runTest(boolean callGetMessageInHandler) throws Exception {
|
||||
CountDownLatch serverInitSignal = new CountDownLatch(1);
|
||||
CountDownLatch testDoneSignal = new CountDownLatch(1);
|
||||
|
||||
@@ -58,23 +65,31 @@
|
||||
|
||||
serverInitSignal.await();
|
||||
|
||||
- boolean paramModified = runClientCode(serverThread.getPort());
|
||||
+ boolean paramModified = runClientCode(serverThread.getPort(), callGetMessageInHandler);
|
||||
|
||||
testDoneSignal.countDown();
|
||||
|
||||
- Assert.assertFalse(paramModified, "WS parameter was modified during round trip.");
|
||||
+ Assert.assertEquals(callGetMessageInHandler, paramModified,
|
||||
+ "WS parameter has not been processed as expected");
|
||||
+ }
|
||||
+
|
||||
+ @DataProvider
|
||||
+ public Object[][] callHandlerDataProvider() {
|
||||
+ return new Object[][]{{true}, {false}};
|
||||
}
|
||||
|
||||
/*
|
||||
* Connects to launched web service endpoint, sends message with CR/NL symbols and
|
||||
* checks if it was modified during the round trip client/server communication.
|
||||
*/
|
||||
- private boolean runClientCode(int port) throws Exception {
|
||||
+ private boolean runClientCode(int port, boolean callGetMessage) throws Exception {
|
||||
System.out.println("Launching WS client connection on " + port + " port");
|
||||
URL url = new URL("http://localhost:" + port + "/ws/hello?wsdl");
|
||||
QName qname = new QName("http://ws/", "HelloWorldImplService");
|
||||
Service service = Service.create(url, qname);
|
||||
|
||||
+ registerHandler(service, callGetMessage);
|
||||
+
|
||||
HelloWorld hello = (HelloWorld) service.getPort(HelloWorld.class);
|
||||
|
||||
logStringContent("Client input parameter", WS_PARAM_VALUE);
|
||||
@@ -86,6 +101,45 @@
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Register message handler and call SOAPMessageContext.getMessage
|
||||
+ * to emulate issue reported in JDK-8196491
|
||||
+ */
|
||||
+ private void registerHandler(Service service, final boolean callGetMessage) {
|
||||
+ System.out.printf( "Client %s call getMessage inside message handler%n",
|
||||
+ callGetMessage ? "will" : "will not" );
|
||||
+ // Set custom SOAP message handler resolver
|
||||
+ service.setHandlerResolver(portInfo -> {
|
||||
+ Handler h = new SOAPHandler<SOAPMessageContext>() {
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean handleMessage(SOAPMessageContext context) {
|
||||
+ if (callGetMessage) {
|
||||
+ // Trigger exception from JDK-8196491
|
||||
+ SOAPMessage msg = context.getMessage();
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean handleFault(SOAPMessageContext context) {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void close(MessageContext context) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Set<QName> getHeaders() {
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ };
|
||||
+ return Collections.singletonList(h);
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
* Outputs the parameter value with newline and carriage-return symbols
|
||||
* replaced with #CR and #NL text abbreviations.
|
||||
*/
|
@ -1,28 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java 2018-09-18 09:55:59.118433163 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java 2018-09-18 09:56:21.186553300 +0200
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/**
|
||||
* @test
|
||||
- * @bug 4206909 4813885 8189789
|
||||
+ * @bug 4206909 4813885 8189789 8196854
|
||||
* @summary Test basic functionality of DeflaterOutputStream/InflaterInputStream and GZIPOutputStream/GZIPInputStream, including flush
|
||||
* @key randomness
|
||||
*/
|
||||
@@ -154,7 +154,6 @@
|
||||
OutputStream output = new FlushableGZIPOutputStream(byteOutStream);
|
||||
|
||||
byte[] data = new byte[random.nextInt(1024 * 1024)];
|
||||
- byte[] buf = new byte[data.length];
|
||||
random.nextBytes(data);
|
||||
|
||||
output.write(data);
|
||||
@@ -176,7 +175,7 @@
|
||||
int numRead;
|
||||
byte[] b = new byte[4 * 1024];
|
||||
try {
|
||||
- while ((numRead = gzis.read(buf)) >= 0) {
|
||||
+ while ((numRead = gzis.read(b)) >= 0) {
|
||||
baos.write(b, 0, numRead);
|
||||
}
|
||||
} finally {
|
@ -1,72 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/CompileDemos.gmk 2018-09-18 09:57:38.246972802 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/CompileDemos.gmk 2018-09-18 09:58:10.947150824 +0200
|
||||
@@ -455,29 +455,6 @@
|
||||
|
||||
##################################################################################################
|
||||
|
||||
-ifndef OPENJDK
|
||||
- DB_DEMO_ZIPFILE := $(wildcard $(JDK_TOPDIR)/src/closed/share/db/db-derby-*-bin.zip)
|
||||
-
|
||||
- $(JDK_OUTPUTDIR)/demo/_the.db.unzipped: $(DB_DEMO_ZIPFILE)
|
||||
- $(MKDIR) -p $(@D)
|
||||
- $(RM) -r $(JDK_OUTPUTDIR)/demo/db $(JDK_OUTPUTDIR)/demo/demo
|
||||
- $(CD) $(JDK_OUTPUTDIR)/demo && $(UNZIP) -q -o $<
|
||||
- $(MV) $(JDK_OUTPUTDIR)/demo/db-derby-*-bin/demo $(JDK_OUTPUTDIR)/demo/db
|
||||
- $(CD) $(JDK_OUTPUTDIR)/demo && $(RM) -r db-derby-*-bin
|
||||
- $(TOUCH) $@
|
||||
-
|
||||
- # Copy this after the unzip above to avoid race with directory creation and mv command.
|
||||
- $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html: \
|
||||
- $(JDK_TOPDIR)/src/closed/share/db/README-JDK-DEMOS.html \
|
||||
- | $(JDK_OUTPUTDIR)/demo/_the.db.unzipped
|
||||
- $(MKDIR) -p $(@D)
|
||||
- $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(JDK_TOPDIR)/src/closed/share/db/COPYRIGHTYEAR)/" > $@
|
||||
-
|
||||
- BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/_the.db.unzipped $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html
|
||||
-endif
|
||||
-
|
||||
-##################################################################################################
|
||||
-
|
||||
all: $(BUILD_DEMOS)
|
||||
|
||||
.PHONY: all
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/Images.gmk 2018-09-18 09:57:38.246972802 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/Images.gmk 2018-09-18 09:58:11.103151672 +0200
|
||||
@@ -542,37 +542,6 @@
|
||||
$(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_SAMPLE_TARGETS)))
|
||||
|
||||
################################################################################
|
||||
-# /db dir
|
||||
-
|
||||
-ifndef OPENJDK
|
||||
- $(IMAGES_OUTPUTDIR)/_unzip/%.unzipped: $(JDK_TOPDIR)/src/closed/share/db/%
|
||||
- $(ECHO) Unzipping $(patsubst $(SRC_ROOT)/%,%,$<)
|
||||
- $(MKDIR) -p $(JDK_IMAGE_DIR)/db
|
||||
- cd $(JDK_IMAGE_DIR)/db && $(UNZIP) -q -o $< -x */index.html */KEYS */test/* *javadoc/* */docs/* */demo/* 2> /dev/null
|
||||
- cd $(JDK_IMAGE_DIR)/db && $(MV) db-derby-*-bin/* . && $(RM) -r db-derby-*-bin
|
||||
-ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
- $(RM) $(JDK_IMAGE_DIR)/db/bin/*.bat
|
||||
-endif
|
||||
- $(MKDIR) -p $(@D)
|
||||
- $(TOUCH) $@
|
||||
-
|
||||
- $(JDK_IMAGE_DIR)/db/README-JDK.html: $(JDK_TOPDIR)/src/closed/share/db/README-JDK.html
|
||||
- $(ECHO) $(LOG_INFO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'
|
||||
- $(MKDIR) -p $(@D)
|
||||
- $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(JDK_TOPDIR)/src/closed/share/db/COPYRIGHTYEAR)/" > $@
|
||||
-
|
||||
- $(JDK_IMAGE_DIR)/db/3RDPARTY: $(JDK_TOPDIR)/src/closed/share/db/3RDPARTY
|
||||
- $(ECHO) $(LOG_INFO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'
|
||||
- $(MKDIR) -p $(@D)
|
||||
- $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(JDK_TOPDIR)/src/closed/share/db/COPYRIGHTYEAR)/" > $@
|
||||
-
|
||||
- JDK_DB_TARGETS := $(patsubst $(JDK_TOPDIR)/src/closed/share/db/%, $(IMAGES_OUTPUTDIR)/_unzip/%.unzipped, \
|
||||
- $(wildcard $(JDK_TOPDIR)/src/closed/share/db/db-derby-*-bin.zip)) \
|
||||
- $(JDK_IMAGE_DIR)/db/README-JDK.html $(JDK_IMAGE_DIR)/db/3RDPARTY
|
||||
-
|
||||
-endif
|
||||
-
|
||||
-################################################################################
|
||||
# /include dir
|
||||
|
||||
$(foreach f,$(call CacheFind,$(JDK_OUTPUTDIR)/include), \
|
@ -1,79 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 09:59:41.495643758 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 09:59:57.923733188 +0200
|
||||
@@ -86,6 +86,18 @@
|
||||
private static final ObjectStreamField[] serialPersistentFields =
|
||||
NO_FIELDS;
|
||||
|
||||
+ /** true if deserialization constructor checking is disabled */
|
||||
+ private static boolean disableSerialConstructorChecks =
|
||||
+ AccessController.doPrivileged(
|
||||
+ new PrivilegedAction<Boolean>() {
|
||||
+ public Boolean run() {
|
||||
+ String prop = "jdk.disableSerialConstructorChecks";
|
||||
+ return "true".equals(System.getProperty(prop))
|
||||
+ ? Boolean.TRUE : Boolean.FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ ).booleanValue();
|
||||
+
|
||||
/** reflection factory for obtaining serialization constructors */
|
||||
private static final ReflectionFactory reflFactory =
|
||||
AccessController.doPrivileged(
|
||||
@@ -1497,6 +1509,46 @@
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Given a class, determines whether its superclass has
|
||||
+ * any constructors that are accessible from the class.
|
||||
+ * This is a special purpose method intended to do access
|
||||
+ * checking for a serializable class and its superclasses
|
||||
+ * up to, but not including, the first non-serializable
|
||||
+ * superclass. This also implies that the superclass is
|
||||
+ * always non-null, because a serializable class must be a
|
||||
+ * class (not an interface) and Object is not serializable.
|
||||
+ *
|
||||
+ * @param cl the class from which access is checked
|
||||
+ * @return whether the superclass has a constructor accessible from cl
|
||||
+ */
|
||||
+ private static boolean superHasAccessibleConstructor(Class<?> cl) {
|
||||
+ Class<?> superCl = cl.getSuperclass();
|
||||
+ assert Serializable.class.isAssignableFrom(cl);
|
||||
+ assert superCl != null;
|
||||
+ if (packageEquals(cl, superCl)) {
|
||||
+ // accessible if any non-private constructor is found
|
||||
+ for (Constructor<?> ctor : superCl.getDeclaredConstructors()) {
|
||||
+ if ((ctor.getModifiers() & Modifier.PRIVATE) == 0) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+ } else {
|
||||
+ // accessible if the parent is public and any constructor
|
||||
+ // is protected or public
|
||||
+ if ((superCl.getModifiers() & Modifier.PUBLIC) == 0) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (Constructor<?> ctor : superCl.getDeclaredConstructors()) {
|
||||
+ if ((ctor.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) != 0) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* Returns subclass-accessible no-arg constructor of first non-serializable
|
||||
* superclass, or null if none found. Access checks are disabled on the
|
||||
* returned constructor (if any).
|
||||
@@ -1504,7 +1556,9 @@
|
||||
private static Constructor<?> getSerializableConstructor(Class<?> cl) {
|
||||
Class<?> initCl = cl;
|
||||
while (Serializable.class.isAssignableFrom(initCl)) {
|
||||
- if ((initCl = initCl.getSuperclass()) == null) {
|
||||
+ Class<?> prev = initCl;
|
||||
+ if ((initCl = initCl.getSuperclass()) == null ||
|
||||
+ (!disableSerialConstructorChecks && !superHasAccessibleConstructor(prev))) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java 2018-09-18 10:01:25.012207276 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java 2018-09-18 10:01:45.616319435 +0200
|
||||
@@ -674,20 +674,18 @@
|
||||
versionInfo().jdwpMinor >= 6;
|
||||
}
|
||||
public boolean canGetInstanceInfo() {
|
||||
- if (versionInfo().jdwpMajor < 1 ||
|
||||
- versionInfo().jdwpMinor < 6) {
|
||||
- return false;
|
||||
- }
|
||||
+ if (versionInfo().jdwpMajor > 1 ||
|
||||
+ versionInfo().jdwpMinor >= 6) {
|
||||
validateVM();
|
||||
return hasNewCapabilities() &&
|
||||
capabilitiesNew().canGetInstanceInfo;
|
||||
- }
|
||||
- public boolean canUseSourceNameFilters() {
|
||||
- if (versionInfo().jdwpMajor < 1 ||
|
||||
- versionInfo().jdwpMinor < 6) {
|
||||
+ } else {
|
||||
return false;
|
||||
}
|
||||
- return true;
|
||||
+ }
|
||||
+ public boolean canUseSourceNameFilters() {
|
||||
+ return versionInfo().jdwpMajor > 1 ||
|
||||
+ versionInfo().jdwpMinor >= 6;
|
||||
}
|
||||
public boolean canForceEarlyReturn() {
|
||||
validateVM();
|
||||
@@ -703,12 +701,8 @@
|
||||
capabilitiesNew().canGetSourceDebugExtension;
|
||||
}
|
||||
public boolean canGetClassFileVersion() {
|
||||
- if ( versionInfo().jdwpMajor < 1 &&
|
||||
- versionInfo().jdwpMinor < 6) {
|
||||
- return false;
|
||||
- } else {
|
||||
- return true;
|
||||
- }
|
||||
+ return versionInfo().jdwpMajor > 1 ||
|
||||
+ versionInfo().jdwpMinor >= 6;
|
||||
}
|
||||
public boolean canGetConstantPool() {
|
||||
validateVM();
|
@ -1,32 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/os/linux/vm/os_linux.hpp 2018-09-18 10:03:21.160839536 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/os/linux/vm/os_linux.hpp 2018-09-18 10:16:17.285065419 +0200
|
||||
@@ -287,8 +287,8 @@
|
||||
static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; }
|
||||
static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; }
|
||||
static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
|
||||
- static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = *ptr; }
|
||||
- static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = *ptr; }
|
||||
+ static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
|
||||
+ static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
|
||||
static int sched_getcpu_syscall(void);
|
||||
public:
|
||||
static int sched_getcpu() { return _sched_getcpu != NULL ? _sched_getcpu() : -1; }
|
||||
@@ -332,6 +332,18 @@
|
||||
static bool isnode_in_existing_nodes(unsigned int n) {
|
||||
if (_numa_bitmask_isbitset != NULL && _numa_nodes_ptr != NULL) {
|
||||
return _numa_bitmask_isbitset(_numa_nodes_ptr, n);
|
||||
+ } else if (_numa_bitmask_isbitset != NULL && _numa_all_nodes_ptr != NULL) {
|
||||
+ // Not all libnuma API v2 implement numa_nodes_ptr, so it's not possible
|
||||
+ // to trust the API version for checking its absence. On the other hand,
|
||||
+ // numa_nodes_ptr found in libnuma 2.0.9 and above is the only way to get
|
||||
+ // a complete view of all numa nodes in the system, hence numa_nodes_ptr
|
||||
+ // is used to handle CPU and nodes on architectures (like PowerPC) where
|
||||
+ // there can exist nodes with CPUs but no memory or vice-versa and the
|
||||
+ // nodes may be non-contiguous. For most of the architectures, like
|
||||
+ // x86_64, numa_node_ptr presents the same node set as found in
|
||||
+ // numa_all_nodes_ptr so it's possible to use numa_all_nodes_ptr as a
|
||||
+ // substitute.
|
||||
+ return _numa_bitmask_isbitset(_numa_all_nodes_ptr, n);
|
||||
} else
|
||||
return 0;
|
||||
}
|
223
8199406.patch
223
8199406.patch
@ -1,223 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.cpp 2018-09-18 10:17:46.065548902 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.cpp 2018-09-18 10:18:04.537649500 +0200
|
||||
@@ -292,6 +292,28 @@
|
||||
return blob;
|
||||
}
|
||||
|
||||
+VtableBlob::VtableBlob(const char* name, int size) :
|
||||
+ BufferBlob(name, size) {
|
||||
+}
|
||||
+
|
||||
+VtableBlob* VtableBlob::create(const char* name, int buffer_size) {
|
||||
+ ThreadInVMfromUnknown __tiv; // get to VM state in case we block on CodeCache_lock
|
||||
+
|
||||
+ VtableBlob* blob = NULL;
|
||||
+ unsigned int size = sizeof(VtableBlob);
|
||||
+ // align the size to CodeEntryAlignment
|
||||
+ size = align_code_offset(size);
|
||||
+ size += round_to(buffer_size, oopSize);
|
||||
+ assert(name != NULL, "must provide a name");
|
||||
+ {
|
||||
+ MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
||||
+ blob = new (size) VtableBlob(name, size);
|
||||
+ }
|
||||
+ // Track memory usage statistic after releasing CodeCache_lock
|
||||
+ MemoryService::track_code_cache_memory_usage();
|
||||
+
|
||||
+ return blob;
|
||||
+}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Implementation of MethodHandlesAdapterBlob
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.hpp 2018-09-18 10:17:46.065548902 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.hpp 2018-09-18 10:18:04.537649500 +0200
|
||||
@@ -101,6 +101,7 @@
|
||||
virtual bool is_exception_stub() const { return false; }
|
||||
virtual bool is_safepoint_stub() const { return false; }
|
||||
virtual bool is_adapter_blob() const { return false; }
|
||||
+ virtual bool is_vtable_blob() const { return false; }
|
||||
virtual bool is_method_handles_adapter_blob() const { return false; }
|
||||
|
||||
virtual bool is_compiled_by_c2() const { return false; }
|
||||
@@ -202,6 +203,7 @@
|
||||
class BufferBlob: public CodeBlob {
|
||||
friend class VMStructs;
|
||||
friend class AdapterBlob;
|
||||
+ friend class VtableBlob;
|
||||
friend class MethodHandlesAdapterBlob;
|
||||
|
||||
private:
|
||||
@@ -246,6 +248,18 @@
|
||||
virtual bool is_adapter_blob() const { return true; }
|
||||
};
|
||||
|
||||
+//---------------------------------------------------------------------------------------------------
|
||||
+class VtableBlob: public BufferBlob {
|
||||
+private:
|
||||
+ VtableBlob(const char*, int);
|
||||
+
|
||||
+public:
|
||||
+ // Creation
|
||||
+ static VtableBlob* create(const char* name, int buffer_size);
|
||||
+
|
||||
+ // Typing
|
||||
+ virtual bool is_vtable_blob() const { return true; }
|
||||
+};
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// MethodHandlesAdapterBlob: used to hold MethodHandles adapters
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/compiledIC.cpp 2018-09-18 10:17:46.065548902 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/compiledIC.cpp 2018-09-18 10:18:04.585649761 +0200
|
||||
@@ -232,7 +232,7 @@
|
||||
assert(k->verify_itable_index(itable_index), "sanity check");
|
||||
#endif //ASSERT
|
||||
CompiledICHolder* holder = new CompiledICHolder(call_info->resolved_method()->method_holder(),
|
||||
- call_info->resolved_klass()());
|
||||
+ call_info->resolved_klass()(), false);
|
||||
holder->claim();
|
||||
InlineCacheBuffer::create_transition_stub(this, holder, entry);
|
||||
} else {
|
||||
@@ -270,7 +270,7 @@
|
||||
assert(!is_optimized(), "an optimized call cannot be megamorphic");
|
||||
|
||||
// Cannot rely on cached_value. It is either an interface or a method.
|
||||
- return VtableStubs::is_entry_point(ic_destination());
|
||||
+ return VtableStubs::entry_point(ic_destination()) != NULL;
|
||||
}
|
||||
|
||||
bool CompiledIC::is_call_to_compiled() const {
|
||||
@@ -534,9 +534,11 @@
|
||||
return true;
|
||||
}
|
||||
// itable stubs also use CompiledICHolder
|
||||
- if (VtableStubs::is_entry_point(entry) && VtableStubs::stub_containing(entry)->is_itable_stub()) {
|
||||
- return true;
|
||||
+ if (cb != NULL && cb->is_vtable_blob()) {
|
||||
+ VtableStub* s = VtableStubs::entry_point(entry);
|
||||
+ return (s != NULL) && s->is_itable_stub();
|
||||
}
|
||||
+
|
||||
return false;
|
||||
}
|
||||
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.cpp 2018-09-18 10:17:46.065548902 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.cpp 2018-09-18 10:18:04.585649761 +0200
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
// There is a dependency on the name of the blob in src/share/vm/prims/jvmtiCodeBlobEvents.cpp
|
||||
// If changing the name, update the other file accordingly.
|
||||
- BufferBlob* blob = BufferBlob::create("vtable chunks", bytes);
|
||||
+ VtableBlob* blob = VtableBlob::create("vtable chunks", bytes);
|
||||
if (blob == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -167,16 +167,17 @@
|
||||
_number_of_vtable_stubs++;
|
||||
}
|
||||
|
||||
-
|
||||
-bool VtableStubs::is_entry_point(address pc) {
|
||||
+VtableStub* VtableStubs::entry_point(address pc) {
|
||||
MutexLocker ml(VtableStubs_lock);
|
||||
VtableStub* stub = (VtableStub*)(pc - VtableStub::entry_offset());
|
||||
uint hash = VtableStubs::hash(stub->is_vtable_stub(), stub->index());
|
||||
VtableStub* s;
|
||||
for (s = _table[hash]; s != NULL && s != stub; s = s->next()) {}
|
||||
- return s == stub;
|
||||
+ if (s == stub) {
|
||||
+ return s;
|
||||
+ }
|
||||
+ return NULL;
|
||||
}
|
||||
-
|
||||
|
||||
bool VtableStubs::contains(address pc) {
|
||||
// simple solution for now - we may want to use
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.hpp 2018-09-18 10:17:46.065548902 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.hpp 2018-09-18 10:18:04.585649761 +0200
|
||||
@@ -126,7 +126,7 @@
|
||||
public:
|
||||
static address find_vtable_stub(int vtable_index) { return find_stub(true, vtable_index); }
|
||||
static address find_itable_stub(int itable_index) { return find_stub(false, itable_index); }
|
||||
- static bool is_entry_point(address pc); // is pc a vtable stub entry point?
|
||||
+ static VtableStub* entry_point(address pc); // vtable stub entry point for a pc
|
||||
static bool contains(address pc); // is pc within any stub?
|
||||
static VtableStub* stub_containing(address pc); // stub containing pc or NULL
|
||||
static int number_of_vtable_stubs() { return _number_of_vtable_stubs; }
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.cpp 2018-09-18 10:17:46.073548946 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.cpp 2018-09-18 10:18:04.585649761 +0200
|
||||
@@ -24,30 +24,12 @@
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "oops/compiledICHolder.hpp"
|
||||
-#include "oops/klass.hpp"
|
||||
-#include "oops/method.hpp"
|
||||
#include "oops/oop.inline2.hpp"
|
||||
|
||||
volatile int CompiledICHolder::_live_count;
|
||||
volatile int CompiledICHolder::_live_not_claimed_count;
|
||||
|
||||
|
||||
-bool CompiledICHolder::is_loader_alive(BoolObjectClosure* is_alive) {
|
||||
- if (_holder_metadata->is_method()) {
|
||||
- if (!((Method*)_holder_metadata)->method_holder()->is_loader_alive(is_alive)) {
|
||||
- return false;
|
||||
- }
|
||||
- } else if (_holder_metadata->is_klass()) {
|
||||
- if (!((Klass*)_holder_metadata)->is_loader_alive(is_alive)) {
|
||||
- return false;
|
||||
- }
|
||||
- }
|
||||
- if (!_holder_klass->is_loader_alive(is_alive)) {
|
||||
- return false;
|
||||
- }
|
||||
- return true;
|
||||
-}
|
||||
-
|
||||
// Printing
|
||||
|
||||
void CompiledICHolder::print_on(outputStream* st) const {
|
||||
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.hpp 2018-09-18 10:17:46.073548946 +0200
|
||||
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.hpp 2018-09-18 10:18:04.585649761 +0200
|
||||
@@ -26,6 +26,8 @@
|
||||
#define SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
|
||||
|
||||
#include "oops/oop.hpp"
|
||||
+#include "oops/klass.hpp"
|
||||
+#include "oops/method.hpp"
|
||||
|
||||
// A CompiledICHolder* is a helper object for the inline cache implementation.
|
||||
// It holds:
|
||||
@@ -48,11 +50,12 @@
|
||||
Metadata* _holder_metadata;
|
||||
Klass* _holder_klass; // to avoid name conflict with oopDesc::_klass
|
||||
CompiledICHolder* _next;
|
||||
+ bool _is_metadata_method;
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
- CompiledICHolder(Metadata* metadata, Klass* klass)
|
||||
- : _holder_metadata(metadata), _holder_klass(klass) {
|
||||
+ CompiledICHolder(Metadata* metadata, Klass* klass, bool is_method = true)
|
||||
+ : _holder_metadata(metadata), _holder_klass(klass), _is_metadata_method(is_method) {
|
||||
#ifdef ASSERT
|
||||
Atomic::inc(&_live_count);
|
||||
Atomic::inc(&_live_not_claimed_count);
|
||||
@@ -82,7 +85,16 @@
|
||||
CompiledICHolder* next() { return _next; }
|
||||
void set_next(CompiledICHolder* n) { _next = n; }
|
||||
|
||||
- bool is_loader_alive(BoolObjectClosure* is_alive);
|
||||
+ inline bool is_loader_alive(BoolObjectClosure* is_alive) {
|
||||
+ Klass* k = _is_metadata_method ? ((Method*)_holder_metadata)->method_holder() : (Klass*)_holder_metadata;
|
||||
+ if (!k->is_loader_alive(is_alive)) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (!_holder_klass->is_loader_alive(is_alive)) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
|
||||
// Verify
|
||||
void verify_on(outputStream* st);
|
@ -1,11 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java 2018-09-18 10:20:24.942414144 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java 2018-09-18 10:21:21.026719597 +0200
|
||||
@@ -113,7 +113,7 @@
|
||||
}
|
||||
sb.append(nl);
|
||||
sb.append(pattern);
|
||||
- if (index >= 0) {
|
||||
+ if (index >= 0 && pattern != null && index < pattern.length()) {
|
||||
sb.append(nl);
|
||||
for (int i = 0; i < index; i++) sb.append(' ');
|
||||
sb.append('^');
|
3577
8200359.patch
3577
8200359.patch
File diff suppressed because it is too large
Load Diff
@ -1,80 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2018-09-18 10:25:46.640166044 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2018-09-18 10:26:40.104457189 +0200
|
||||
@@ -27,26 +27,27 @@
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
-import java.io.InterruptedIOException;
|
||||
import java.io.IOException;
|
||||
-import java.io.OutputStream;
|
||||
import java.io.InputStream;
|
||||
+import java.io.InterruptedIOException;
|
||||
+import java.io.OutputStream;
|
||||
+import java.lang.reflect.Constructor;
|
||||
+import java.lang.reflect.InvocationTargetException;
|
||||
+import java.lang.reflect.Method;
|
||||
import java.net.Socket;
|
||||
-import javax.net.ssl.SSLSocket;
|
||||
+import java.security.AccessController;
|
||||
+import java.security.PrivilegedAction;
|
||||
+import java.util.Arrays;
|
||||
|
||||
import javax.naming.CommunicationException;
|
||||
-import javax.naming.ServiceUnavailableException;
|
||||
-import javax.naming.NamingException;
|
||||
import javax.naming.InterruptedNamingException;
|
||||
-
|
||||
+import javax.naming.NamingException;
|
||||
+import javax.naming.ServiceUnavailableException;
|
||||
import javax.naming.ldap.Control;
|
||||
+import javax.net.ssl.SSLParameters;
|
||||
+import javax.net.ssl.SSLSocket;
|
||||
|
||||
-import java.lang.reflect.Method;
|
||||
-import java.lang.reflect.Constructor;
|
||||
-import java.lang.reflect.InvocationTargetException;
|
||||
-import java.util.Arrays;
|
||||
import sun.misc.IOUtils;
|
||||
-//import javax.net.SocketFactory;
|
||||
|
||||
/**
|
||||
* A thread that creates a connection to an LDAP server.
|
||||
@@ -159,7 +160,18 @@
|
||||
|
||||
int readTimeout;
|
||||
int connectTimeout;
|
||||
+ private static final boolean IS_HOSTNAME_VERIFICATION_DISABLED
|
||||
+ = hostnameVerificationDisabledValue();
|
||||
|
||||
+ private static boolean hostnameVerificationDisabledValue() {
|
||||
+ PrivilegedAction<String> act = () -> System.getProperty(
|
||||
+ "com.sun.jndi.ldap.object.disableEndpointIdentification");
|
||||
+ String prop = AccessController.doPrivileged(act);
|
||||
+ if (prop == null) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return prop.isEmpty() ? true : Boolean.parseBoolean(prop);
|
||||
+ }
|
||||
// true means v3; false means v2
|
||||
// Called in LdapClient.authenticate() (which is synchronized)
|
||||
// when connection is "quiet" and not shared; no need to synchronize
|
||||
@@ -368,11 +380,17 @@
|
||||
// the SSL handshake following socket connection as part of the timeout.
|
||||
// So explicitly set a socket read timeout, trigger the SSL handshake,
|
||||
// then reset the timeout.
|
||||
- if (connectTimeout > 0 && socket instanceof SSLSocket) {
|
||||
+ if (socket instanceof SSLSocket) {
|
||||
SSLSocket sslSocket = (SSLSocket) socket;
|
||||
int socketTimeout = sslSocket.getSoTimeout();
|
||||
-
|
||||
+ if (!IS_HOSTNAME_VERIFICATION_DISABLED) {
|
||||
+ SSLParameters param = sslSocket.getSSLParameters();
|
||||
+ param.setEndpointIdentificationAlgorithm("LDAPS");
|
||||
+ sslSocket.setSSLParameters(param);
|
||||
+ }
|
||||
+ if (connectTimeout > 0) {
|
||||
sslSocket.setSoTimeout(connectTimeout); // reuse full timeout value
|
||||
+ }
|
||||
sslSocket.startHandshake();
|
||||
sslSocket.setSoTimeout(socketTimeout);
|
||||
}
|
101
8201433.patch
101
8201433.patch
@ -1,101 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c 2018-09-18 10:25:46.856167220 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c 2018-09-18 10:28:49.249143807 +0200
|
||||
@@ -298,6 +298,10 @@
|
||||
}
|
||||
|
||||
cData->img_clr_tbl = initCubemap(pRgb, bisdo->lutsize, 32);
|
||||
+ if (cData->img_clr_tbl == NULL) {
|
||||
+ free(cData);
|
||||
+ return (ColorData*)NULL;
|
||||
+ }
|
||||
if (allGray == JNI_TRUE) {
|
||||
initInverseGrayLut(pRgb, bisdo->lutsize, cData);
|
||||
}
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java Tue Apr 24 11:23:34 2018 +0100
|
||||
@@ -0,0 +1,85 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2018, 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.
|
||||
+ */
|
||||
+
|
||||
+import java.awt.Graphics;
|
||||
+import java.awt.image.BufferedImage;
|
||||
+import java.awt.image.DataBuffer;
|
||||
+import java.awt.image.DataBufferByte;
|
||||
+import java.awt.image.IndexColorModel;
|
||||
+import java.awt.image.MultiPixelPackedSampleModel;
|
||||
+import java.awt.image.Raster;
|
||||
+import java.awt.image.SampleModel;
|
||||
+import java.awt.image.WritableRaster;
|
||||
+
|
||||
+/*
|
||||
+ * @test
|
||||
+ * @bug 8201433
|
||||
+ * @summary This test may throw OOME or NPE from native code,
|
||||
+ * it should not crash
|
||||
+ * @requires os.maxMemory >= 2G
|
||||
+ * @run main/othervm/timeout=300000 -Xms1000m -Xmx1000m ICMColorDataTest
|
||||
+ */
|
||||
+public class ICMColorDataTest {
|
||||
+ private static final int WIDTH = 90;
|
||||
+ private static final int HEIGHT = 90;
|
||||
+ private static final int BITS_PER_PIXEL = 1;
|
||||
+ private static final int PIXELS_IN_BYTE = 8;
|
||||
+
|
||||
+ // Color model components
|
||||
+ private static final byte[] RED = { (byte) 255, 0 };
|
||||
+ private static final byte[] GREEN = { (byte) 255, 0 };
|
||||
+ private static final byte[] BLUE = { (byte) 255, 0 };
|
||||
+
|
||||
+ public static void main(String[] args) {
|
||||
+ try {
|
||||
+ for (long i = 0; i < 300_000; i++) {
|
||||
+ makeImage();
|
||||
+ }
|
||||
+ } catch (OutOfMemoryError | NullPointerException e) {
|
||||
+ System.err.println("Caught expected exception:\n" +
|
||||
+ e.getClass() + ": " + e.getMessage());
|
||||
+ }
|
||||
+ System.err.println("Test passed");
|
||||
+ }
|
||||
+
|
||||
+ private static void makeImage() {
|
||||
+ int scanLineBytes = WIDTH / PIXELS_IN_BYTE;
|
||||
+ if ((WIDTH & (PIXELS_IN_BYTE - 1)) != 0) {
|
||||
+ // Make sure all the pixels in a scan line fit
|
||||
+ scanLineBytes += 1;
|
||||
+ }
|
||||
+
|
||||
+ byte[] bits = new byte[scanLineBytes * HEIGHT];
|
||||
+ DataBuffer dataBuf = new DataBufferByte(bits, bits.length, 0);
|
||||
+ SampleModel sampleModel = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE,
|
||||
+ WIDTH, HEIGHT, BITS_PER_PIXEL);
|
||||
+ WritableRaster raster = Raster.createWritableRaster(sampleModel, dataBuf, null);
|
||||
+ IndexColorModel indexModel = new IndexColorModel(2, 2, RED, GREEN, BLUE);
|
||||
+ BufferedImage bufImage = new BufferedImage(indexModel, raster,
|
||||
+ indexModel.isAlphaPremultiplied(), null);
|
||||
+
|
||||
+ Graphics g = bufImage.getGraphics();
|
||||
+ g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1);
|
||||
+ g.dispose();
|
||||
+ }
|
||||
+}
|
183
8202585.patch
183
8202585.patch
@ -1,183 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java 2018-09-18 10:29:31.481367749 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java 2018-09-18 10:30:36.733713763 +0200
|
||||
@@ -254,7 +254,7 @@
|
||||
* text.
|
||||
*/
|
||||
{ErrorMsg.ILLEGAL_ATTRIBUTE_ERR,
|
||||
- "Ung\u00FCltiges Attribut \"{0}\"."},
|
||||
+ "Unzul\u00E4ssiges Attribut \"{0}\"."},
|
||||
|
||||
/*
|
||||
* Note to translators: "import" and "include" are keywords that should
|
||||
@@ -307,7 +307,7 @@
|
||||
* function has too many or too few arguments.
|
||||
*/
|
||||
{ErrorMsg.ILLEGAL_ARG_ERR,
|
||||
- "Ung\u00FCltige Argumente f\u00FCr Funktionsaufruf."},
|
||||
+ "Unzul\u00E4ssige Argumente f\u00FCr Funktionsaufruf."},
|
||||
|
||||
/*
|
||||
* Note to translators: "document()" is the name of function and must
|
||||
--- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties 2018-09-18 10:29:31.493367812 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties 2018-09-18 10:30:36.733713763 +0200
|
||||
@@ -15,7 +15,7 @@
|
||||
INDEX_SIZE_ERR = Index oder Gr\u00F6\u00DFe ist negativ oder gr\u00F6\u00DFer als der zul\u00E4ssige Wert.
|
||||
INUSE_ATTRIBUTE_ERR = Es wurde versucht, ein Attribut hinzuzuf\u00FCgen, das bereits an einer anderen Stelle verwendet wird.
|
||||
INVALID_ACCESS_ERR = Ein Parameter oder Vorgang wird nicht vom zugrunde liegenden Objekt unterst\u00FCtzt.
|
||||
-INVALID_CHARACTER_ERR = Ung\u00FCltiges XML-Zeichen angegeben.
|
||||
+INVALID_CHARACTER_ERR = Ung\u00FCltiges oder unzul\u00E4ssiges XML-Zeichen angegeben.
|
||||
INVALID_MODIFICATION_ERR = Es wurde versucht, den Typ des zugrunde liegenden Objekts zu \u00E4ndern.
|
||||
INVALID_STATE_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, das nicht verwendet werden kann.
|
||||
NAMESPACE_ERR = Es wurde versucht, ein Objekt auf eine Weise zu erstellen oder zu \u00E4ndern, die falsch in Bezug auf Namespaces ist.
|
||||
@@ -23,7 +23,7 @@
|
||||
NOT_SUPPORTED_ERR = Der angeforderte Typ des Objekts oder Vorgangs wird nicht von der Implementierung unterst\u00FCtzt.
|
||||
NO_DATA_ALLOWED_ERR = Daten wurden f\u00FCr einen Knoten angegeben, der keine Daten unterst\u00FCtzt.
|
||||
NO_MODIFICATION_ALLOWED_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, bei dem \u00C4nderungen nicht zul\u00E4ssig sind.
|
||||
-SYNTAX_ERR = Ung\u00FCltige Zeichenfolge angegeben.
|
||||
+SYNTAX_ERR = Ung\u00FCltige oder unzul\u00E4ssige Zeichenfolge angegeben.
|
||||
VALIDATION_ERR = Aufruf einer Methode wie insertBefore oder removeChild w\u00FCrde die Dokumentgrammatik des Knotens ung\u00FCltig machen.
|
||||
WRONG_DOCUMENT_ERR = Ein Knoten wird in einem anderen Dokument verwendet als dem, von dem er erstellt wurde.
|
||||
TYPE_MISMATCH_ERR = Der Werttyp f\u00FCr diesen Parameternamen ist nicht mit dem erwarteten Werttyp kompatibel.
|
||||
--- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties 2018-09-18 10:29:31.493367812 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties 2018-09-18 10:30:36.733713763 +0200
|
||||
@@ -123,7 +123,7 @@
|
||||
InvalidHighSurrogate = High-Surrogate-Bits in UTF-8-Sequenz d\u00FCrfen 0x10 nicht \u00FCberschreiten, gefunden wurde aber 0x{0}.
|
||||
OperationNotSupported = Vorgang "{0}" nicht unterst\u00FCtzt von {1}-Reader.
|
||||
InvalidASCII = Byte "{0}" geh\u00F6rt nicht zum (7-Bit) ASCII-Zeichensatz.
|
||||
- CharConversionFailure = Eine Entity, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung ung\u00FCltig sind.
|
||||
+ CharConversionFailure = Eine Entity, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung unzul\u00E4ssig sind.
|
||||
|
||||
# DTD Messages
|
||||
# 2.2 Characters
|
||||
--- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2018-09-18 10:29:31.509367897 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2018-09-18 10:30:36.737713783 +0200
|
||||
@@ -429,7 +429,7 @@
|
||||
"ERROR. Unbekannter Vorgangscode: {0}"},
|
||||
|
||||
{ ER_EXTRA_ILLEGAL_TOKENS,
|
||||
- "Zus\u00E4tzliche ung\u00FCltige Tokens: {0}"},
|
||||
+ "Zus\u00E4tzliche unzul\u00E4ssige Tokens: {0}"},
|
||||
|
||||
{ ER_EXPECTED_DOUBLE_QUOTE,
|
||||
"Literal in falschen Anf\u00FChrungszeichen... Doppelte Anf\u00FChrungszeichen erwartet."},
|
||||
@@ -456,10 +456,10 @@
|
||||
"\",\" gefunden, aber kein folgendes Argument vorhanden."},
|
||||
|
||||
{ ER_PREDICATE_ILLEGAL_SYNTAX,
|
||||
- "\"..[predicate]\" oder \".[predicate]\" ist ung\u00FCltige Syntax. Verwenden Sie stattdessen \"self::node()[predicate]\"."},
|
||||
+ "\"..[predicate]\" oder \".[predicate]\" ist unzul\u00E4ssige Syntax. Verwenden Sie stattdessen \"self::node()[predicate]\"."},
|
||||
|
||||
{ ER_ILLEGAL_AXIS_NAME,
|
||||
- "Ung\u00FCltiger Achsenname: {0}"},
|
||||
+ "Unzul\u00E4ssiger Achsenname: {0}"},
|
||||
|
||||
{ ER_UNKNOWN_NODETYPE,
|
||||
"Unbekannter Knotentyp: {0}"},
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties 2018-09-18 10:29:30.957364971 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties 2018-09-18 10:30:16.213604953 +0200
|
||||
@@ -59,7 +59,7 @@
|
||||
FileChooser.saveTitle.textAndMnemonic=Speichern
|
||||
FileChooser.openTitle.textAndMnemonic=\u00D6ffnen
|
||||
FileChooser.newFolderExistsError.textAndMnemonic=Dieser Name ist bereits vergeben
|
||||
-FileChooser.chooseButton.textAndMnemonic=W\u00E4hlen
|
||||
+FileChooser.chooseButton.textAndMnemonic=Ausw\u00E4hlen
|
||||
|
||||
FileChooser.newFolderButton.textAndMnemonic=Neuer Ordner
|
||||
FileChooser.newFolderTitle.textAndMnemonic=Neuer Ordner
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties 2018-09-18 10:29:31.013365267 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties 2018-09-18 10:30:16.213604953 +0200
|
||||
@@ -30,7 +30,7 @@
|
||||
cachedrowsetimpl.invalidop = Ung\u00FCltiger Vorgang beim Zeileneinf\u00FCgen
|
||||
cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich
|
||||
cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition
|
||||
-cachedrowsetimpl.illegalop = Ung\u00FCltiger Vorgang bei nicht eingef\u00FCgter Zeile
|
||||
+cachedrowsetimpl.illegalop = Unzul\u00E4ssiger Vorgang bei nicht eingef\u00FCgter Zeile
|
||||
cachedrowsetimpl.clonefail = Klonen nicht erfolgreich: {0}
|
||||
cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex
|
||||
cachedrowsetimpl.invalcolnm = Ung\u00FCltiger Spaltenname
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties 2018-09-18 10:29:31.049365457 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties 2018-09-18 10:30:16.213604953 +0200
|
||||
@@ -43,7 +43,7 @@
|
||||
rmid.syntax.log.required=Option -log ist erforderlich
|
||||
|
||||
# {0} = the (string) illegal argument in question
|
||||
-rmid.syntax.illegal.option=Ung\u00FCltige Option: {0}
|
||||
+rmid.syntax.illegal.option=Unzul\u00E4ssige Option: {0}
|
||||
|
||||
# {0} = the (string) reason text that came with a thrown exception
|
||||
# "Activation.main" should not be translated, because it's a codepoint
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java 2018-09-18 10:29:31.061365522 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java 2018-09-18 10:30:16.217604974 +0200
|
||||
@@ -99,7 +99,7 @@
|
||||
{"destination.alias",
|
||||
"Zielalias"}, //-destalias
|
||||
{"destination.key.password",
|
||||
- "Zielschl\u00FCssel-Kennwort"}, //-destkeypass
|
||||
+ "Zielschl\u00FCsselkennwort"}, //-destkeypass
|
||||
{"destination.keystore.name",
|
||||
"Ziel-Keystore-Name"}, //-destkeystore
|
||||
{"destination.keystore.password.protected",
|
||||
@@ -147,7 +147,7 @@
|
||||
{"source.alias",
|
||||
"Quellalias"}, //-srcalias
|
||||
{"source.key.password",
|
||||
- "Quellschl\u00FCssel-Kennwort"}, //-srckeypass
|
||||
+ "Quellschl\u00FCsselkennwort"}, //-srckeypass
|
||||
{"source.keystore.name",
|
||||
"Quell-Keystore-Name"}, //-srckeystore
|
||||
{"source.keystore.password.protected",
|
||||
@@ -178,8 +178,8 @@
|
||||
"Serielle ID des zu entziehenden Certs"}, //-id
|
||||
// keytool: Running part
|
||||
{"keytool.error.", "Keytool-Fehler: "},
|
||||
- {"Illegal.option.", "Ung\u00FCltige Option: "},
|
||||
- {"Illegal.value.", "Ung\u00FCltiger Wert: "},
|
||||
+ {"Illegal.option.", "Unzul\u00E4ssige Option: "},
|
||||
+ {"Illegal.value.", "Unzul\u00E4ssiger Wert: "},
|
||||
{"Unknown.password.type.", "Unbekannter Kennworttyp: "},
|
||||
{"Cannot.find.environment.variable.",
|
||||
"Umgebungsvariable kann nicht gefunden werden: "},
|
||||
@@ -205,7 +205,7 @@
|
||||
"Wenn der Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"},
|
||||
{"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
|
||||
"Wenn der Quell-Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"},
|
||||
- {"Illegal.startdate.value", "Ung\u00FCltiger Wert f\u00FCr Anfangsdatum"},
|
||||
+ {"Illegal.startdate.value", "Unzul\u00E4ssiger Wert f\u00FCr Anfangsdatum"},
|
||||
{"Validity.must.be.greater.than.zero",
|
||||
"G\u00FCltigkeit muss gr\u00F6\u00DFer als null sein"},
|
||||
{"provName.not.a.provider", "{0} kein Provider"},
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java 2018-09-18 10:29:31.061365522 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java 2018-09-18 10:30:16.217604974 +0200
|
||||
@@ -39,8 +39,8 @@
|
||||
{"Warning.Class.not.found.class", "Warnung: Klasse nicht gefunden: {0}"},
|
||||
{"Warning.Invalid.argument.s.for.constructor.arg",
|
||||
"Warnung: Ung\u00FCltige(s) Argument(e) f\u00FCr Constructor: {0}"},
|
||||
- {"Illegal.Principal.Type.type", "Ung\u00FCltiger Principal-Typ: {0}"},
|
||||
- {"Illegal.option.option", "Ung\u00FCltige Option: {0}"},
|
||||
+ {"Illegal.Principal.Type.type", "Unzul\u00E4ssiger Principal-Typ: {0}"},
|
||||
+ {"Illegal.option.option", "Unzul\u00E4ssige Option: {0}"},
|
||||
{"Usage.policytool.options.", "Verwendung: policytool [Optionen]"},
|
||||
{".file.file.policy.file.location",
|
||||
" [-file <Datei>] Policy-Dateiverzeichnis"},
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java 2018-09-18 10:29:31.061365522 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java 2018-09-18 10:30:16.217604974 +0200
|
||||
@@ -88,7 +88,7 @@
|
||||
{"Keystore.alias.","Nyckellageralias: "},
|
||||
{"Keystore.password.","Nyckellagerl\u00F6senord: "},
|
||||
{"Private.key.password.optional.",
|
||||
- "L\u00F6senord f\u00F6r personlig nyckel (valfritt): "},
|
||||
+ "L\u00F6senord f\u00F6r privat nyckel (valfritt): "},
|
||||
|
||||
// com.sun.security.auth.module.Krb5LoginModule
|
||||
{"Kerberos.username.defUsername.",
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties 2018-09-18 10:29:31.073365585 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties 2018-09-18 10:30:16.217604974 +0200
|
||||
@@ -24,7 +24,7 @@
|
||||
#
|
||||
|
||||
error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0}
|
||||
-error.illegal.option=Ung\u00FCltige Option: {0}
|
||||
+error.illegal.option=Unzul\u00E4ssige Option: {0}
|
||||
error.bad.option=Eine der Optionen -{ctxu} muss angegeben werden.
|
||||
error.bad.cflag=Kennzeichen "c" erfordert Angabe von Manifest oder Eingabedateien.
|
||||
error.bad.uflag=Kennzeichen "u" erfordert Angabe von Manifest, Kennzeichen "e" oder Eingabedateien.
|
@ -1,10 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java 2018-09-18 10:32:28.226304949 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java 2018-09-18 10:32:47.694408174 +0200
|
||||
@@ -727,7 +727,6 @@
|
||||
int magic = in.readInt();
|
||||
|
||||
if (magic == POST) {
|
||||
- System.err.println("DISABLED: " + disableIncomingHttp);
|
||||
if (disableIncomingHttp) {
|
||||
throw new RemoteException("RMI over HTTP is disabled");
|
||||
}
|
426
8203233.patch
426
8203233.patch
@ -1,426 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/africa 2018-09-18 10:33:48.522730738 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/africa 2018-09-18 10:34:24.486921443 +0200
|
||||
@@ -29,7 +29,7 @@
|
||||
# tz@iana.org for general use in the future). For more, please see
|
||||
# the file CONTRIBUTING in the tz distribution.
|
||||
|
||||
-# From Paul Eggert (2017-02-20):
|
||||
+# From Paul Eggert (2017-04-09):
|
||||
#
|
||||
# Unless otherwise specified, the source for data through 1990 is:
|
||||
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
|
||||
@@ -75,7 +75,7 @@
|
||||
# cannot now come up with solid citations.
|
||||
#
|
||||
# I invented the following abbreviations; corrections are welcome!
|
||||
-# +02 WAST West Africa Summer Time
|
||||
+# +02 WAST West Africa Summer Time (no longer used)
|
||||
# +03 CAST Central Africa Summer Time (no longer used)
|
||||
# +03 SAST South Africa Summer Time (no longer used)
|
||||
# +03 EAT East Africa Time
|
||||
@@ -990,6 +990,10 @@
|
||||
# commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on
|
||||
# Sunday 4 September 1994.
|
||||
|
||||
+# From Michael Deckers (2017-04-06):
|
||||
+# ... both summer and winter time are called "standard"
|
||||
+# (which differs from the use in Ireland) ...
|
||||
+
|
||||
# From Petronella Sibeene (2007-03-30):
|
||||
# http://allafrica.com/stories/200703300178.html
|
||||
# While the entire country changes its time, Katima Mulilo and other
|
||||
@@ -1015,19 +1019,42 @@
|
||||
# the same time they would normally start DST, the first Sunday in September:
|
||||
# https://www.timeanddate.com/news/time/namibia-new-time-zone.html
|
||||
|
||||
+# From Paul Eggert (2017-04-09):
|
||||
+# Before the change, summer and winter time were both standard time legally.
|
||||
+# However in common parlance, winter time was considered to be DST. See, e.g.:
|
||||
+# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706
|
||||
+# https://zone.my.na/news/times-are-changing-in-namibia
|
||||
+# https://wwwera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/
|
||||
+# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
|
||||
+# with Namibia's neighbors.
|
||||
+
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
-Rule Namibia 1994 only - Mar 21 0:00 0 -
|
||||
-Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S
|
||||
-Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 -
|
||||
+# Vanguard section, for zic and other parsers that support negative DST.
|
||||
+#Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
|
||||
+#Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
|
||||
+#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
|
||||
+# Rearguard section, for parsers that do not support negative DST.
|
||||
+Rule Namibia 1994 only - Mar 21 0:00 0 WAT
|
||||
+Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT
|
||||
+Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT
|
||||
+# End of rearguard section.
|
||||
+
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
||||
1:30 - +0130 1903 Mar
|
||||
2:00 - SAST 1942 Sep 20 2:00
|
||||
2:00 1:00 SAST 1943 Mar 21 2:00
|
||||
2:00 - SAST 1990 Mar 21 # independence
|
||||
+# Vanguard section, for zic and other parsers that support negative DST.
|
||||
+# 2:00 Namibia %s
|
||||
+# Rearguard section, for parsers that do not support negative DST.
|
||||
2:00 - CAT 1994 Mar 21 0:00
|
||||
- 1:00 Namibia WA%sT 2017 Sep 3 2:00
|
||||
+# From Paul Eggert (2017-04-07):
|
||||
+# The official date of the 2017 rule change was 2017-10-24. See:
|
||||
+# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf
|
||||
+ 1:00 Namibia %s 2017 Oct 24
|
||||
2:00 - CAT
|
||||
+# End of rearguard section.
|
||||
|
||||
# Niger
|
||||
# See Africa/Lagos.
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/asia 2018-09-18 10:33:48.522730738 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/asia 2018-09-18 10:34:24.486921443 +0200
|
||||
@@ -2006,6 +2006,19 @@
|
||||
# There is no common English-language abbreviation for this time zone.
|
||||
# Use KST, as that's what we already use for 1954-1961 in ROK.
|
||||
|
||||
+# From Kang Seonghoon (2018-04-29):
|
||||
+# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang
|
||||
+# Time) back to UTC+9 (KST; Korea Standard Time).
|
||||
+#
|
||||
+# From Seo Sanghyeon (2018-04-30):
|
||||
+# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan.
|
||||
+# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf
|
||||
+# ... the transition date is 2018-05-05 ... Citation should be Decree
|
||||
+# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's
|
||||
+# Assembly, as published in Rodong Sinmun.
|
||||
+# From Tim Parenti (2018-04-29):
|
||||
+# It appears to be the front page story at the top in the right-most column.
|
||||
+
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1
|
||||
8:30 - KST 1912 Jan 1
|
||||
@@ -2017,7 +2030,8 @@
|
||||
8:30 - KST 1912 Jan 1
|
||||
9:00 - JST 1945 Aug 24
|
||||
9:00 - KST 2015 Aug 15 00:00
|
||||
- 8:30 - KST
|
||||
+ 8:30 - KST 2018 May 5
|
||||
+ 9:00 - KST
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -2681,7 +2695,7 @@
|
||||
# From Sharef Mustafa (2018-03-16):
|
||||
# Palestine summer time will start on Mar 24th 2018 by advancing the
|
||||
# clock by 60 minutes as per Palestinian cabinet decision published on
|
||||
-# the offical website, though the decree did not specify the exact
|
||||
+# the official website, though the decree did not specify the exact
|
||||
# time of the time shift.
|
||||
# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817
|
||||
#
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/australasia 2018-09-18 10:33:48.522730738 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/australasia 2018-09-18 10:34:24.486921443 +0200
|
||||
@@ -1108,6 +1108,15 @@
|
||||
# (1999-09-27) writes that Giles Meteorological Station uses
|
||||
# South Australian time even though it's located in Western Australia.
|
||||
|
||||
+# From Paul Eggert (2018-04-01):
|
||||
+# The Guardian Express of Perth, Australia reported today that the
|
||||
+# government decided to advance the clocks permanently on January 1,
|
||||
+# 2019, from UT +08 to UT +09. The article noted that an exemption
|
||||
+# would be made for people aged 61 and over, who "can apply in writing
|
||||
+# to have the extra hour of sunshine removed from their area." See:
|
||||
+# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01.
|
||||
+# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
|
||||
+
|
||||
# Queensland
|
||||
|
||||
# From Paul Eggert (2018-02-26):
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/europe 2018-09-18 10:33:48.522730738 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/europe 2018-09-18 10:34:24.486921443 +0200
|
||||
@@ -551,13 +551,13 @@
|
||||
# summer and negative daylight saving time in winter. It is for when
|
||||
# negative SAVE values are used.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
-#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT
|
||||
-#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST
|
||||
-#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT
|
||||
-#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST
|
||||
-#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT
|
||||
-#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT
|
||||
-#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT
|
||||
+#Rule Eire 1971 only - Oct 31 2:00u -1:00 -
|
||||
+#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
|
||||
+#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
|
||||
+#Rule Eire 1981 max - Mar lastSun 1:00u 0 -
|
||||
+#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 -
|
||||
+#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
|
||||
+#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
|
||||
@@ -993,18 +993,30 @@
|
||||
# Please see the 'asia' file for Asia/Nicosia.
|
||||
|
||||
# Czech Republic / Czechia
|
||||
+#
|
||||
+# From Paul Eggert (2018-04-15):
|
||||
+# The source for Czech data is: Kdy začíná a končí letní čas. 2018-04-15.
|
||||
+# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas
|
||||
+# We know of no English-language name for historical Czech winter time;
|
||||
+# abbreviate it as "GMT", as it happened to be GMT.
|
||||
+#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
-Rule Czech 1945 only - Apr 8 2:00s 1:00 S
|
||||
-Rule Czech 1945 only - Nov 18 2:00s 0 -
|
||||
+Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
|
||||
+Rule Czech 1945 only - Oct 1 2:00s 0 -
|
||||
Rule Czech 1946 only - May 6 2:00s 1:00 S
|
||||
Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 -
|
||||
-Rule Czech 1947 only - Apr 20 2:00s 1:00 S
|
||||
-Rule Czech 1948 only - Apr 18 2:00s 1:00 S
|
||||
+Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S
|
||||
Rule Czech 1949 only - Apr 9 2:00s 1:00 S
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
0:57:44 - PMT 1891 Oct # Prague Mean Time
|
||||
- 1:00 C-Eur CE%sT 1944 Sep 17 2:00s
|
||||
+ 1:00 C-Eur CE%sT 1945 May 9
|
||||
+ 1:00 Czech CE%sT 1946 Dec 1 3:00
|
||||
+# Vanguard section, for zic and other parsers that support negative DST.
|
||||
+# 1:00 -1:00 GMT 1947 Feb 23 2:00
|
||||
+# Rearguard section, for parsers that do not support negative DST.
|
||||
+ 0:00 - GMT 1947 Feb 23 2:00
|
||||
+# End of rearguard section.
|
||||
1:00 Czech CE%sT 1979
|
||||
1:00 EU CE%sT
|
||||
# Use Europe/Prague also for Slovakia.
|
||||
@@ -2039,7 +2051,7 @@
|
||||
Rule Neth 1945 only - Apr 2 2:00s 1:00 S
|
||||
Rule Neth 1945 only - Sep 16 2:00s 0 -
|
||||
#
|
||||
-# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
|
||||
+# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted
|
||||
# below because the current format requires GMTOFF to be an integer.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Amsterdam 0:19:32 - LMT 1835
|
||||
--- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/VERSION 2018-09-18 10:33:48.522730738 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/VERSION 2018-09-18 10:34:24.458921295 +0200
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
-tzdata2018d
|
||||
+tzdata2018e
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa 2018-09-18 10:33:48.602731162 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa 2018-09-18 10:34:24.490921464 +0200
|
||||
@@ -29,7 +29,7 @@
|
||||
# tz@iana.org for general use in the future). For more, please see
|
||||
# the file CONTRIBUTING in the tz distribution.
|
||||
|
||||
-# From Paul Eggert (2017-02-20):
|
||||
+# From Paul Eggert (2017-04-09):
|
||||
#
|
||||
# Unless otherwise specified, the source for data through 1990 is:
|
||||
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
|
||||
@@ -75,7 +75,7 @@
|
||||
# cannot now come up with solid citations.
|
||||
#
|
||||
# I invented the following abbreviations; corrections are welcome!
|
||||
-# +02 WAST West Africa Summer Time
|
||||
+# +02 WAST West Africa Summer Time (no longer used)
|
||||
# +03 CAST Central Africa Summer Time (no longer used)
|
||||
# +03 SAST South Africa Summer Time (no longer used)
|
||||
# +03 EAT East Africa Time
|
||||
@@ -990,6 +990,10 @@
|
||||
# commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on
|
||||
# Sunday 4 September 1994.
|
||||
|
||||
+# From Michael Deckers (2017-04-06):
|
||||
+# ... both summer and winter time are called "standard"
|
||||
+# (which differs from the use in Ireland) ...
|
||||
+
|
||||
# From Petronella Sibeene (2007-03-30):
|
||||
# http://allafrica.com/stories/200703300178.html
|
||||
# While the entire country changes its time, Katima Mulilo and other
|
||||
@@ -1015,19 +1019,42 @@
|
||||
# the same time they would normally start DST, the first Sunday in September:
|
||||
# https://www.timeanddate.com/news/time/namibia-new-time-zone.html
|
||||
|
||||
+# From Paul Eggert (2017-04-09):
|
||||
+# Before the change, summer and winter time were both standard time legally.
|
||||
+# However in common parlance, winter time was considered to be DST. See, e.g.:
|
||||
+# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706
|
||||
+# https://zone.my.na/news/times-are-changing-in-namibia
|
||||
+# https://wwwera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/
|
||||
+# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
|
||||
+# with Namibia's neighbors.
|
||||
+
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
-Rule Namibia 1994 only - Mar 21 0:00 0 -
|
||||
-Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S
|
||||
-Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 -
|
||||
+# Vanguard section, for zic and other parsers that support negative DST.
|
||||
+#Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
|
||||
+#Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
|
||||
+#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
|
||||
+# Rearguard section, for parsers that do not support negative DST.
|
||||
+Rule Namibia 1994 only - Mar 21 0:00 0 WAT
|
||||
+Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT
|
||||
+Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT
|
||||
+# End of rearguard section.
|
||||
+
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
||||
1:30 - +0130 1903 Mar
|
||||
2:00 - SAST 1942 Sep 20 2:00
|
||||
2:00 1:00 SAST 1943 Mar 21 2:00
|
||||
2:00 - SAST 1990 Mar 21 # independence
|
||||
+# Vanguard section, for zic and other parsers that support negative DST.
|
||||
+# 2:00 Namibia %s
|
||||
+# Rearguard section, for parsers that do not support negative DST.
|
||||
2:00 - CAT 1994 Mar 21 0:00
|
||||
- 1:00 Namibia WA%sT 2017 Sep 3 2:00
|
||||
+# From Paul Eggert (2017-04-07):
|
||||
+# The official date of the 2017 rule change was 2017-10-24. See:
|
||||
+# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf
|
||||
+ 1:00 Namibia %s 2017 Oct 24
|
||||
2:00 - CAT
|
||||
+# End of rearguard section.
|
||||
|
||||
# Niger
|
||||
# See Africa/Lagos.
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia 2018-09-18 10:33:48.602731162 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia 2018-09-18 10:34:24.490921464 +0200
|
||||
@@ -2006,6 +2006,19 @@
|
||||
# There is no common English-language abbreviation for this time zone.
|
||||
# Use KST, as that's what we already use for 1954-1961 in ROK.
|
||||
|
||||
+# From Kang Seonghoon (2018-04-29):
|
||||
+# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang
|
||||
+# Time) back to UTC+9 (KST; Korea Standard Time).
|
||||
+#
|
||||
+# From Seo Sanghyeon (2018-04-30):
|
||||
+# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan.
|
||||
+# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf
|
||||
+# ... the transition date is 2018-05-05 ... Citation should be Decree
|
||||
+# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's
|
||||
+# Assembly, as published in Rodong Sinmun.
|
||||
+# From Tim Parenti (2018-04-29):
|
||||
+# It appears to be the front page story at the top in the right-most column.
|
||||
+
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1
|
||||
8:30 - KST 1912 Jan 1
|
||||
@@ -2017,7 +2030,8 @@
|
||||
8:30 - KST 1912 Jan 1
|
||||
9:00 - JST 1945 Aug 24
|
||||
9:00 - KST 2015 Aug 15 00:00
|
||||
- 8:30 - KST
|
||||
+ 8:30 - KST 2018 May 5
|
||||
+ 9:00 - KST
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -2681,7 +2695,7 @@
|
||||
# From Sharef Mustafa (2018-03-16):
|
||||
# Palestine summer time will start on Mar 24th 2018 by advancing the
|
||||
# clock by 60 minutes as per Palestinian cabinet decision published on
|
||||
-# the offical website, though the decree did not specify the exact
|
||||
+# the official website, though the decree did not specify the exact
|
||||
# time of the time shift.
|
||||
# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817
|
||||
#
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia 2018-09-18 10:33:48.602731162 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia 2018-09-18 10:34:24.490921464 +0200
|
||||
@@ -1108,6 +1108,15 @@
|
||||
# (1999-09-27) writes that Giles Meteorological Station uses
|
||||
# South Australian time even though it's located in Western Australia.
|
||||
|
||||
+# From Paul Eggert (2018-04-01):
|
||||
+# The Guardian Express of Perth, Australia reported today that the
|
||||
+# government decided to advance the clocks permanently on January 1,
|
||||
+# 2019, from UT +08 to UT +09. The article noted that an exemption
|
||||
+# would be made for people aged 61 and over, who "can apply in writing
|
||||
+# to have the extra hour of sunshine removed from their area." See:
|
||||
+# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01.
|
||||
+# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
|
||||
+
|
||||
# Queensland
|
||||
|
||||
# From Paul Eggert (2018-02-26):
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe 2018-09-18 10:33:48.602731162 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe 2018-09-18 10:34:24.494921486 +0200
|
||||
@@ -551,13 +551,13 @@
|
||||
# summer and negative daylight saving time in winter. It is for when
|
||||
# negative SAVE values are used.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
-#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT
|
||||
-#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST
|
||||
-#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT
|
||||
-#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST
|
||||
-#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT
|
||||
-#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT
|
||||
-#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT
|
||||
+#Rule Eire 1971 only - Oct 31 2:00u -1:00 -
|
||||
+#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
|
||||
+#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
|
||||
+#Rule Eire 1981 max - Mar lastSun 1:00u 0 -
|
||||
+#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 -
|
||||
+#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
|
||||
+#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
|
||||
@@ -993,18 +993,30 @@
|
||||
# Please see the 'asia' file for Asia/Nicosia.
|
||||
|
||||
# Czech Republic / Czechia
|
||||
+#
|
||||
+# From Paul Eggert (2018-04-15):
|
||||
+# The source for Czech data is: Kdy začíná a končí letní čas. 2018-04-15.
|
||||
+# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas
|
||||
+# We know of no English-language name for historical Czech winter time;
|
||||
+# abbreviate it as "GMT", as it happened to be GMT.
|
||||
+#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
-Rule Czech 1945 only - Apr 8 2:00s 1:00 S
|
||||
-Rule Czech 1945 only - Nov 18 2:00s 0 -
|
||||
+Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
|
||||
+Rule Czech 1945 only - Oct 1 2:00s 0 -
|
||||
Rule Czech 1946 only - May 6 2:00s 1:00 S
|
||||
Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 -
|
||||
-Rule Czech 1947 only - Apr 20 2:00s 1:00 S
|
||||
-Rule Czech 1948 only - Apr 18 2:00s 1:00 S
|
||||
+Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S
|
||||
Rule Czech 1949 only - Apr 9 2:00s 1:00 S
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
0:57:44 - PMT 1891 Oct # Prague Mean Time
|
||||
- 1:00 C-Eur CE%sT 1944 Sep 17 2:00s
|
||||
+ 1:00 C-Eur CE%sT 1945 May 9
|
||||
+ 1:00 Czech CE%sT 1946 Dec 1 3:00
|
||||
+# Vanguard section, for zic and other parsers that support negative DST.
|
||||
+# 1:00 -1:00 GMT 1947 Feb 23 2:00
|
||||
+# Rearguard section, for parsers that do not support negative DST.
|
||||
+ 0:00 - GMT 1947 Feb 23 2:00
|
||||
+# End of rearguard section.
|
||||
1:00 Czech CE%sT 1979
|
||||
1:00 EU CE%sT
|
||||
# Use Europe/Prague also for Slovakia.
|
||||
@@ -2039,7 +2051,7 @@
|
||||
Rule Neth 1945 only - Apr 2 2:00s 1:00 S
|
||||
Rule Neth 1945 only - Sep 16 2:00s 0 -
|
||||
#
|
||||
-# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
|
||||
+# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted
|
||||
# below because the current format requires GMTOFF to be an integer.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Amsterdam 0:19:32 - LMT 1835
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION 2018-09-18 10:33:48.602731162 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION 2018-09-18 10:34:24.490921464 +0200
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
-tzdata2018d
|
||||
+tzdata2018e
|
159
8203368.patch
159
8203368.patch
@ -1,159 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java 2018-09-18 10:35:02.583123452 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java 2018-09-18 10:37:06.923782767 +0200
|
||||
@@ -1233,9 +1233,11 @@
|
||||
if (serialFilter != null) {
|
||||
RuntimeException ex = null;
|
||||
ObjectInputFilter.Status status;
|
||||
+ // Info about the stream is not available if overridden by subclass, return 0
|
||||
+ long bytesRead = (bin == null) ? 0 : bin.getBytesRead();
|
||||
try {
|
||||
status = serialFilter.checkInput(new FilterValues(clazz, arrayLength,
|
||||
- totalObjectRefs, depth, bin.getBytesRead()));
|
||||
+ totalObjectRefs, depth, bytesRead));
|
||||
} catch (RuntimeException e) {
|
||||
// Preventive interception of an exception to log
|
||||
status = ObjectInputFilter.Status.REJECTED;
|
||||
@@ -1247,7 +1249,7 @@
|
||||
if (Logging.infoLogger != null) {
|
||||
Logging.infoLogger.info(
|
||||
"ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}",
|
||||
- status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(),
|
||||
+ status, clazz, arrayLength, totalObjectRefs, depth, bytesRead,
|
||||
Objects.toString(ex, "n/a"));
|
||||
}
|
||||
InvalidClassException ice = new InvalidClassException("filter status: " + status);
|
||||
@@ -1258,7 +1260,7 @@
|
||||
if (Logging.traceLogger != null) {
|
||||
Logging.traceLogger.finer(
|
||||
"ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}",
|
||||
- status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(),
|
||||
+ status, clazz, arrayLength, totalObjectRefs, depth, bytesRead,
|
||||
Objects.toString(ex, "n/a"));
|
||||
}
|
||||
}
|
||||
--- icedtea-3.8.0/openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ icedtea-3.8.0/openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java 2018-09-18 10:37:06.923782767 +0200
|
||||
@@ -0,0 +1,123 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2018, 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.
|
||||
+ */
|
||||
+
|
||||
+import java.io.ByteArrayInputStream;
|
||||
+import java.io.IOException;
|
||||
+import java.io.InputStream;
|
||||
+import java.io.ObjectInputStream;
|
||||
+import java.io.InvalidClassException;
|
||||
+
|
||||
+import java.util.Hashtable;
|
||||
+
|
||||
+import sun.misc.ObjectInputFilter;
|
||||
+import sun.misc.SharedSecrets;
|
||||
+
|
||||
+import org.testng.annotations.BeforeClass;
|
||||
+import org.testng.annotations.DataProvider;
|
||||
+import org.testng.annotations.Test;
|
||||
+import org.testng.Assert;
|
||||
+
|
||||
+/* @test
|
||||
+ * @build CheckArrayTest SerialFilterTest
|
||||
+ * @bug 8203368
|
||||
+ * @modules java.base/jdk.internal.misc
|
||||
+ * @run testng CheckArrayTest
|
||||
+ *
|
||||
+ * @summary Test the SharedSecret access to ObjectInputStream.checkArray works
|
||||
+ * with overridden subclasses.
|
||||
+ */
|
||||
+
|
||||
+/**
|
||||
+ * Verify that the SharedSecret access to the OIS checkAccess method
|
||||
+ * does not fail with NPE in the case where ObjectInputStream is subclassed.
|
||||
+ * The checkAccess method is called from various aggregate types in java.util
|
||||
+ * to check array sizes during deserialization via the ObjectInputFilter attached the stream.
|
||||
+ * The filterCheck must be resilent to an InputStream not being available (only the subclass knows).
|
||||
+ */
|
||||
+public class CheckArrayTest {
|
||||
+
|
||||
+ @DataProvider(name = "Patterns")
|
||||
+ Object[][] patterns() {
|
||||
+ return new Object[][]{
|
||||
+ new Object[]{"maxarray=10", 10, new String[10]}, // successful
|
||||
+ new Object[]{"maxarray=10", 11, new String[11]}, // exception expected
|
||||
+ };
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Test SharedSecrets checkArray with unmodified ObjectInputStream.
|
||||
+ */
|
||||
+ @Test(dataProvider = "Patterns")
|
||||
+ public void normalOIS(String pattern, int arraySize, Object[] array) throws IOException {
|
||||
+ ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(pattern);
|
||||
+ byte[] bytes = SerialFilterTest.writeObjects(array);
|
||||
+ try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
|
||||
+ ObjectInputStream ois = new ObjectInputStream(bais)) {
|
||||
+ // Check the arraysize against the filter
|
||||
+ try {
|
||||
+ ObjectInputFilter.Config.setObjectInputFilter(ois, filter);
|
||||
+ SharedSecrets.getJavaOISAccess()
|
||||
+ .checkArray(ois, array.getClass(), arraySize);
|
||||
+ Assert.assertTrue(array.length >= arraySize,
|
||||
+ "Should have thrown InvalidClassException due to array size");
|
||||
+ } catch (InvalidClassException ice) {
|
||||
+ Assert.assertFalse(array.length > arraySize,
|
||||
+ "Should NOT have thrown InvalidClassException due to array size");
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Test SharedSecrets checkArray with an ObjectInputStream subclassed to
|
||||
+ * handle all input stream functions.
|
||||
+ */
|
||||
+ @Test(dataProvider = "Patterns")
|
||||
+ public void subclassedOIS(String pattern, int arraySize, Object[] array) throws IOException {
|
||||
+ byte[] bytes = SerialFilterTest.writeObjects(array);
|
||||
+ try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
|
||||
+ ObjectInputStream ois = new MyInputStream(bais)) {
|
||||
+ // Check the arraysize against the filter
|
||||
+ ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(pattern);
|
||||
+ ObjectInputFilter.Config.setObjectInputFilter(ois, filter);
|
||||
+ SharedSecrets.getJavaOISAccess()
|
||||
+ .checkArray(ois, array.getClass(), arraySize);
|
||||
+ Assert.assertTrue(array.length >= arraySize,
|
||||
+ "Should have thrown InvalidClassException due to array size");
|
||||
+ } catch (InvalidClassException ice) {
|
||||
+ Assert.assertFalse(array.length > arraySize,
|
||||
+ "Should NOT have thrown InvalidClassException due to array size");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Subclass OIS to disable all input stream functions of the OIS.
|
||||
+ */
|
||||
+ static class MyInputStream extends ObjectInputStream {
|
||||
+ MyInputStream(InputStream is) throws IOException {
|
||||
+ super();
|
||||
+ }
|
||||
+
|
||||
+ public void close() {
|
||||
+ }
|
||||
+ }
|
||||
+}
|
@ -1,17 +0,0 @@
|
||||
--- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 10:38:32.628237194 +0200
|
||||
+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 10:39:56.996684522 +0200
|
||||
@@ -1534,11 +1534,11 @@
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
- // accessible if the parent is public and any constructor
|
||||
- // is protected or public
|
||||
- if ((superCl.getModifiers() & Modifier.PUBLIC) == 0) {
|
||||
+ // sanity check to ensure the parent is protected or public
|
||||
+ if ((superCl.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) == 0) {
|
||||
return false;
|
||||
}
|
||||
+ // accessible if any constructor is protected or public
|
||||
for (Constructor<?> ctor : superCl.getDeclaredConstructors()) {
|
||||
if ((ctor.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) != 0) {
|
||||
return true;
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6a27c6f81817a4edf633572198a7d4f829f2239a98bdd1daf805688794af3951
|
||||
size 6762428
|
||||
oid sha256:af4e52f9ce43d9b5856465bb2f20a3c20d9a8dad26630858641b34be4ecb0af9
|
||||
size 6771692
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aafdd43428da68785963007ec932fd463f83962ef4280239d58c0840e8a48f7f
|
||||
size 942152
|
||||
oid sha256:47cfbcd6612af9161e35b8ed5ffe5519624062ccaa3b5cc2f1a13b1d9228d380
|
||||
size 944220
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:89bccb95d88d6f84778fbfcd79ff1efbe21d5d6820bed7b1ad8a73623517b438
|
||||
size 6838240
|
||||
oid sha256:08aa741f9758049dda90fdb366c6d4fe4a96ea221aa9b20cee8710c0467bd82a
|
||||
size 6851860
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ff9d3737ca5cc8712bad31c565c50939d8b062234d3d49c5efa083bbaa24c3e6
|
||||
size 1496972
|
3
icedtea-3.9.0.tar.xz
Normal file
3
icedtea-3.9.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:45577f65e61509fcfa1dfce06ff9c33ef5cfea0e308dc1f63e120975ce7bdc3c
|
||||
size 1513688
|
@ -2,20 +2,20 @@
|
||||
+++ icedtea-3.0.1/jconsole.desktop.in 2016-04-27 09:46:17.592085490 +0200
|
||||
@@ -1,5 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Name=OpenJDK @JAVA_VER@ Monitoring & Management Console
|
||||
Name=OpenJDK @OPENJDK_VER@ for @target_cpu@ Monitoring & Management Console
|
||||
+GenericName=OpenJDK @JAVA_VER@ Policy Tool
|
||||
Comment=Monitor and manage OpenJDK applications
|
||||
Exec=_BINDIR_/jconsole
|
||||
Icon=java-@JAVA_VER@
|
||||
Icon=java-@JAVA_VER@-@JAVA_VENDOR@
|
||||
--- icedtea-3.0.1/policytool.desktop.in 2016-04-24 08:37:02.001303877 +0200
|
||||
+++ icedtea-3.0.1/policytool.desktop.in 2016-04-27 09:45:32.061111551 +0200
|
||||
@@ -1,10 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Name=OpenJDK @JAVA_VER@ Policy Tool
|
||||
Name=OpenJDK @OPENJDK_VER@ for @target_cpu@ Policy Tool
|
||||
+GenericName=OpenJDK @JAVA_VER@ Policy Tool
|
||||
Comment=Manage OpenJDK policy files
|
||||
Exec=_BINDIR_/policytool
|
||||
Icon=java-@JAVA_VER@
|
||||
Icon=java-@JAVA_VER@-@JAVA_VENDOR@
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupWMClass=sun-security-tools-PolicyTool
|
||||
|
@ -1,3 +1,480 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 28 05:15:18 UTC 2018 - Fridrich Strba <fstrba@suse.com>
|
||||
|
||||
- Update to version jdk8u181 (icedtea 3.9.0)
|
||||
* Security fixes
|
||||
+ S8191239: Improve desktop file usage
|
||||
+ S8193419: Better Internet address support
|
||||
+ S8197871, CVE-2018-2938, bsc#1101644: Support Derby
|
||||
connections
|
||||
+ S8197925, CVE-2018-2940, bsc#1101645: Better stack walking
|
||||
+ S8199547, CVE-2018-2952, bsc#1101651: Exception to Pattern
|
||||
Syntax
|
||||
+ S8200666, CVE-2018-2973, bsc#1101656: Improve LDAP support
|
||||
+ PR3607, CVE-2018-3639: hw: cpu: speculative store bypass
|
||||
mitigation
|
||||
* New features
|
||||
+ PR3623: Allow Shenandoah to be used on all architectures
|
||||
+ PR3624: Sync desktop files with Fedora/RHEL versions again
|
||||
+ PR3628: Install symlinks to tapsets in SystemTap directory
|
||||
* Import of OpenJDK 8 u172 build 11
|
||||
+ S8031304: Add dcmd to print all loaded dynamic libraries.
|
||||
+ S8044107: Add Diagnostic Command to list all ClassLoaders
|
||||
+ S8055755: Information about loaded dynamic libraries is wrong
|
||||
on MacOSX
|
||||
+ S8059036: Implement Diagnostic Commands for heap and
|
||||
finalizerinfo
|
||||
+ S8130400: Test java/awt/image/DrawImage/
|
||||
/IncorrectClipXorModeSurface2Surface.java fails with
|
||||
ClassCastException
|
||||
+ S8136356: Add time zone mappings on Windows
|
||||
+ S8139673: NMT stack traces in output should show mtcomponent
|
||||
+ S8147542: ClassCastException when repainting after display
|
||||
resolution change
|
||||
+ S8154017: Shutdown hooks are racing against shutdown
|
||||
sequence, if System.exit()-calling thread is interrupted
|
||||
+ S8165466: DecimalFormat percentage format can contain
|
||||
unexpected %
|
||||
+ S8166772: Touch keyboard is not shown for text components on
|
||||
a screen touch
|
||||
+ S8169424: src/share/sample/scripting/scriptpad/src/scripts/
|
||||
/memory.sh missing #!
|
||||
+ S8170358: [REDO] 8k class metaspace chunks misallocated from
|
||||
4k chunk Freelist
|
||||
+ S8170395: Metaspace initialization queries the wrong chunk
|
||||
freelist
|
||||
+ S8176072: READING attributes are not available on TSF
|
||||
+ S8177721: Improve diagnostics in
|
||||
sun.management.Agent#startAgent()
|
||||
+ S8177758: Regression in java.awt.FileDialog
|
||||
+ S8183504: 8u131 Win 10, issue with wrong position of Sogou
|
||||
IME popup
|
||||
+ S8184991: NMT detail diff should take memory type into account
|
||||
+ S8187331: VirtualSpaceList tracks free space on wrong node
|
||||
+ S8187629: NMT: Memory miscounting in compiler (C2)
|
||||
+ S8187658: Bigger buffer for GetAdaptersAddresses
|
||||
+ S8187685: NMT: Tracking compiler memory usage of thread's
|
||||
resource area
|
||||
+ S8187803: JDK part of JavaFX-Swing dialogs appearing behind
|
||||
main stage
|
||||
+ S8187985: Broken certificate number in debug output
|
||||
+ S8188855: Fix VS10 build after "8187658: Bigger buffer for
|
||||
GetAdaptersAddresses"
|
||||
+ S8189599: InitialBootClassLoaderMetaspaceSize and
|
||||
CompressedClassSpaceSize should be checked consistent from
|
||||
MaxMetaspaceSize
|
||||
+ S8189646: sun/security/ssl/SSLSocketImpl/
|
||||
/SSLSocketCloseHang.java failed with
|
||||
"java.net.SocketTimeoutException: Read timed out"
|
||||
+ S8190442: Backout changes for JDK-8087291 from 8u-dev as it
|
||||
didn't use main CR id
|
||||
+ S8190690: Impact on krb5 test cases in the 8u-CPU nightly
|
||||
+ S8191969: javac produces incorrect
|
||||
RuntimeInvisibleTypeAnnotations length attribute
|
||||
+ S8192987: keytool should remember real storetype if it is not
|
||||
provided
|
||||
+ S8193156: Need to backout fixes for JDK-8058547, JDK-8055753,
|
||||
JDK-8085903
|
||||
+ S8193807: Avoid UnsatisfiedLinkError on AIX by providing
|
||||
empty basic implementations of getSystemCpuLoad and
|
||||
getProcessCpuLoad
|
||||
* Import of OpenJDK 8 u181 build 13
|
||||
+ S8038636: speculative traps break when classes are redefined
|
||||
+ S8051972: sun/security/pkcs11/ec/ReadCertificates.java fails
|
||||
intermittently
|
||||
+ S8055008: Clean up code that saves the previous versions of
|
||||
redefined classes
|
||||
+ S8057570: RedefineClasses() tests fail
|
||||
assert(((Metadata*)obj)->is_valid()) failed: obj is valid
|
||||
+ S8074373: NMT is not enabled if NMT option is specified after
|
||||
class path specifiers
|
||||
+ S8076117: EndEntityChecker should not process custom
|
||||
extensions after PKIX validation
|
||||
+ S8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links
|
||||
+ S8157898: SupportedDSAParamGen.java failed with timeout
|
||||
+ S8169201: Montgomery multiply intrinsic should use correct
|
||||
name
|
||||
+ S8170035: When determining the ciphersuite lists, there is no
|
||||
debug output for disabled suites.
|
||||
+ S8176183: sun/security/mscapi/SignedObjectChain.java fails on
|
||||
Windows
|
||||
+ S8187045: [linux] Not all libraries in the VM are linked with
|
||||
-z,noexecstack
|
||||
+ S8187635: On Windows Swing changes keyboard layout on a
|
||||
window activation
|
||||
+ S8188223: IfNode::range_check_trap_proj() should handler
|
||||
dying subgraph with single if proj
|
||||
+ S8196224: Even better Internet address support
|
||||
+ S8196491: Newlines in JAXB string values of SOAP-requests are
|
||||
escaped to "
"
|
||||
+ S8196854: TestFlushableGZIPOutputStream failing with
|
||||
IndexOutOfBoundsException
|
||||
+ S8197943: Unable to use JDWP API in JDK 8 to debug JDK 9 VM
|
||||
+ S8198605: Touch keyboard is shown for a non-focusable text
|
||||
component
|
||||
+ S8198606: Touch keyboard does not hide, when a text component
|
||||
looses focus
|
||||
+ S8198794: Hotspot crash on Cassandra 3.11.1 startup with
|
||||
libnuma 2.0.3
|
||||
+ S8199406: Performance drop with Java JDK 1.8.0_162-b32
|
||||
+ S8199748: Touch keyboard is not shown, if text component gets
|
||||
focus from other text component
|
||||
+ S8200359: (tz) Upgrade time-zone data to tzdata2018d
|
||||
+ S8201433: Fix potential crash in BufImg_SetupICM
|
||||
+ S8202585: JDK 8u181 l10n resource file update
|
||||
+ S8202996: Remove debug print statements from RMI fix
|
||||
+ S8203233: (tz) Upgrade time-zone data to tzdata2018e
|
||||
+ S8203368: ObjectInputStream filterCheck method throws
|
||||
NullPointerException
|
||||
+ S8204874: Update THIRDPARTYREADME file
|
||||
+ S8205491: adjust reflective access checks
|
||||
* Backports
|
||||
+ S8008321, PR3599: compile.cpp verify_graph_edges uses bool as
|
||||
int
|
||||
+ S8064786, PR3601: Fix debug build after 8062808: Turn on the
|
||||
-Wreturn-type warning
|
||||
+ S8075942, PR3602, RH1582032: ArrayIndexOutOfBoundsException
|
||||
in sun.java2d.pisces.Dasher.goTo
|
||||
+ S8146115, PR3508, RH1463098: Improve docker container
|
||||
detection and resource configuration usage
|
||||
+ S8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
|
||||
+ S8203182, PR3603: Release session if initialization of
|
||||
SunPKCS11 Signature fails
|
||||
+ S8206406, PR3610, RH1597825: StubCodeDesc constructor
|
||||
publishes partially-constructed objects on StubCodeDesc::_list
|
||||
+ S8207057, PR3613: No debug info for assembler files
|
||||
* Bug fixes
|
||||
+ PR3597: Potential bogus -Wformat-overflow warning with
|
||||
-Wformat enabled
|
||||
+ PR3600: jni_util.c does not import header file which declares
|
||||
getLastErrorString
|
||||
+ PR3601: Fix additional -Wreturn-type issues introduced by
|
||||
8061651
|
||||
+ PR3630: Use ${datadir} when specifying default tz.properties
|
||||
location
|
||||
+ PR3632: IcedTea installing symlinks to SystemTap directory
|
||||
rather than individual tapsets
|
||||
* AArch64 port
|
||||
+ S8207345, PR3626: Trampoline generation code reads from
|
||||
uninitialized memory
|
||||
* Shenandoah
|
||||
+ PR3619: Shenandoah broken on s390
|
||||
+ PR3620: Shenandoah broken on ppc64
|
||||
+ Allocation failure injection machinery
|
||||
+ [backport] AArch64 shenandoah_store_check should read
|
||||
evacuation_in_progress as byte
|
||||
+ [backport] Account trashed regions from coalesced CM-with-UR
|
||||
+ [backport] Adaptive collection set selection in adaptive
|
||||
policy
|
||||
+ [backport] Adaptive heuristics accounts trashed cset twice
|
||||
+ [backport] Adapt upstream object pinning API
|
||||
+ [backport] Add comments in shenandoah_store_check on direct
|
||||
heap field use
|
||||
+ [backport] Added diagnostic flag ShenandoahOOMDuringEvacALot
|
||||
+ [backport] Added missing header file for non-PCH build
|
||||
+ [backport] Add missing barrier in C1 NIOCheckIndex intrinsic
|
||||
+ [backport] Add new pinned/cset region state for
|
||||
evac-failure-path
|
||||
+ [backport] Add ShenandoahRootProcessor API to report threads
|
||||
while scanning roots
|
||||
+ [backport] Add test to verify Shenandoah is not enabled by
|
||||
default, and enabled with the flag
|
||||
+ [backport] Add -XX:+ShenandoahVerify to more interesting tests
|
||||
+ [backport] AESCrypt.implEncryptBlock/AESCrypt.implDecryptBlock
|
||||
intrinsics assume non null inputs
|
||||
+ [backport] Allow use of fp spills around write barrier
|
||||
+ [backport] Arraycopy fixes (tests and infrastructure)
|
||||
+ [backport] Assert Shenandoah-specific safepoints instead of
|
||||
generic ones
|
||||
+ [backport] Asynchronous region recycling
|
||||
+ [backport] Avoid notifying about zero waste
|
||||
+ [backport] barrier moved due to null checks needs to always
|
||||
fix memory edges
|
||||
+ [backport] Basic support for x86_32: build and run in STW
|
||||
configuration
|
||||
+ [backport] Bitmap based ShHeapRegionSet
|
||||
+ [backport] Break heuristics out from ShCollectorPolicy into
|
||||
their own source files
|
||||
+ [backport] C2 should use heapword-sized object math
|
||||
+ [backport] Check BS type in immByteMapBase predicate
|
||||
+ [backport] Cleanup allocation tracking in heuristics
|
||||
+ [backport] Cleanup and refactor Full GC code
|
||||
+ [backport] Cleanup and strengthen BrooksPointer verification
|
||||
+ [backport] Clean up dead code
|
||||
+ [backport] Cleanup: removed unused code
|
||||
+ [backport] Cleanup reset_{next|complete}_mark_bitmap
|
||||
+ [backport] Cleanup SHH::should_start_normal_gc
|
||||
+ [backport] "Compact" heuristics for dense footprint scenarios
|
||||
+ [backport] Compact heuristics should not shortcut on
|
||||
immediate garbage, but aggressively compact
|
||||
+ [backport] Conditionalize PerfDataMemorySize on enabled heap
|
||||
sampling
|
||||
+ [backport] Consistent liveness for humongous regions
|
||||
+ [backport] Control loop should wait before starting another
|
||||
GC cycle
|
||||
+ [backport] Critical native tests should only be ran on x86_64
|
||||
platforms
|
||||
+ [backport] Degenerated GC
|
||||
+ [backport] Degenerated GC: rename enum, report degen reasons
|
||||
in stats
|
||||
+ [backport] Demote ShenandoahAllocImplicitLive to diagnostic
|
||||
+ [backport] Demote warning message about OOM-during-evac to
|
||||
informational
|
||||
+ [backport] Denser ShHeapRegion status line
|
||||
+ [backport] Disable verification from non-Shenandoah VMOps.
|
||||
+ [backport] Disallow pinned_cset region moves and allocations
|
||||
during Full GC
|
||||
+ [backport] Disambiguate "upgrade to Full GC" GCause
|
||||
+ [backport] Do not add non-allocatable regions to the freeset
|
||||
+ [backport] Don't treat allocation regions implicitely live
|
||||
during some GCs
|
||||
+ [backport] Double check for UseShenandoahGC in WB expand
|
||||
+ [backport] Drop distinction between immediate garbage and
|
||||
free in heuristics
|
||||
+ [backport] Dynamic worker refactoring
|
||||
+ [backport] Eagerly drop CSet state from regions during Full GC
|
||||
+ [backport] Eliminate write-barrier assembly stub (part 1)
|
||||
+ [backport] Enable biased locking for Shenandoah by default
|
||||
+ [backport] Ensure tasks use correct number of workers
|
||||
+ [backport] Excessive assert in ShHeap::mark_next
|
||||
+ [backport] Excessive asserts in marked_object_iterate
|
||||
+ [backport] FinalEvac pause to turn off evacuation
|
||||
+ [backport] Fix || and && chaining warnings in memnode.cpp
|
||||
+ [backport] Fix broken asserts in ShenandoahSharedEnumFlag
|
||||
+ [backport] Fixed code roots scanning that might be bypassed
|
||||
during degenerated cycle
|
||||
+ [backport] Fixed compilation error of libTestHeapDump.c on
|
||||
Windows with VS2010
|
||||
+ [backport] Fixed missing ResourceMark in
|
||||
ShenandoahAsserts::print_obj
|
||||
+ [backport] Fixed pinned region handling in mark-compact
|
||||
+ [backport] Fix (external) heap iteration + TestHeapDump
|
||||
should unlock aggressive heuristics
|
||||
+ [backport] fix for alias analysis with
|
||||
ShenandoahBarriersForConst
|
||||
+ [backport] Fix/improve CLD processing
|
||||
+ [backport] Fixing Windows and ARM32 build
|
||||
+ [backport] Fix Mac OS build warnings
|
||||
+ [backport] Fix Minimal VM build
|
||||
+ [backport] Fix ShFreeSet boundary case
|
||||
+ [backport] fix TCK crash with shenandoah
|
||||
+ [backport] Forcefully update counters when GC cycle is running
|
||||
+ [backport] FreeSet and HeapRegion should have the reference
|
||||
to ShenandoahHeap
|
||||
+ [backport] FreeSet refactor: bitmaps, cursors, biasing
|
||||
+ [backport] FreeSet should accept responsibility over trashed
|
||||
regions
|
||||
+ [backport] FreeSet should report its internal state
|
||||
before/after GC cycle
|
||||
+ [backport] Full GC should compact humongous regions
|
||||
+ [backport] Full GC should not trash empty regions
|
||||
+ [backport] GC state testers (infra)
|
||||
+ [backport] Generic verification is possible only at
|
||||
Shenandoah safepoints
|
||||
+ [backport] Get easy on template instantiations in ShConcMark
|
||||
+ [backport] Heap region sampling should publish region states
|
||||
+ [backport] Humongous regions should support explicit pinning
|
||||
+ [backport] Immediate garbage ratio should not go over 100%
|
||||
+ [backport] Implement flag to generate write-barriers without
|
||||
membars
|
||||
+ [backport] Implement protocol for safe OOM during evacuation
|
||||
handling + Use jint in oom-evac-handler to match older JDKs
|
||||
Atomic support better + Missing OOMScope in
|
||||
ShenandoahFixRootsTask
|
||||
+ [backport] Improve assertion/verification messages a bit
|
||||
+ [backport] Improve/more detailed timing stats for root queue
|
||||
work
|
||||
+ [backport] Incorrect constant folding with final field and
|
||||
-ShenandoahOptimizeFinals
|
||||
+ [backport] Increase test timeouts
|
||||
+ [backport] Introduce assert_in_correct_region to verify
|
||||
object is in correct region
|
||||
+ [backport] Isolate shenandoahVerifier from stray headers
|
||||
+ [backport] keep read barriers for final instance/stable field
|
||||
accesses
|
||||
+ [backport] Keep track of per-cycle mutator/collector allocs.
|
||||
Fix mutator/collector alloc region overlap in traversal.
|
||||
+ [backport] Little cleanup
|
||||
+ [backport] Log message on ref processing, class unload,
|
||||
update refs for mark events
|
||||
+ [backport] LotsOfCycles test timeouts
|
||||
+ [backport] Make concurrent precleaning log message optional
|
||||
again
|
||||
+ [backport] Make control loop more responsive under allocation
|
||||
pressure
|
||||
+ [backport] Make degenerated update-refs use region-set cursor
|
||||
to hand over work
|
||||
+ [backport] Make heap counters update completely asynchronous
|
||||
+ [backport] Make major GC phases exclusive from each other
|
||||
+ [backport] Make sure selective barriers enabling/disabling
|
||||
works
|
||||
+ [backport] Make sure -XX:+ShenandoahVerify comes first in the
|
||||
tests
|
||||
+ [backport] Mark bitmap slices commit/uncommit + Aggregated
|
||||
bitmap slicing
|
||||
+ [backport] Match barrier fastpath checks better
|
||||
+ [backport] Minor cleanups
|
||||
+ [backport] Minor cleanup, uses latest Atomic API
|
||||
+ [backport] Move barriers into typeArrayOop.hpp direct memory
|
||||
accessors
|
||||
+ [backport] Move ShHeap::used increment out of locked
|
||||
allocation path
|
||||
+ [backport] No need for fence in control loop: flags are now
|
||||
ShSharedVariables
|
||||
+ [backport] Only report GC pause time to GC MXBean + Re-fix
|
||||
memory managers and memory pools usage and pause reporting
|
||||
+ [backport] Optimize fwdptr region handling in
|
||||
ShenandoahVerifyOopClosure::verify_oop
|
||||
+ [backport] Optimize oop/fwdptr/hr_index verification a bit
|
||||
+ [backport] overflow integer during size calculation
|
||||
+ [backport] Pacer should account allocation waste and
|
||||
unsuccessful pacing in the budget
|
||||
+ [backport] Pacer should poll FreeSet to figure out actually
|
||||
available space
|
||||
+ [backport] Passive should opt-in the barriers, not opt-out
|
||||
+ [backport] Pauses that do not affect heap occupancy should
|
||||
not report heap
|
||||
+ [backport] Print message when heuristics changes the setting
|
||||
ergonomically
|
||||
+ [backport] Protect C2 matchers with UseShenandoahGC
|
||||
+ [backport] Provide non-taxable allocation slack at the
|
||||
beginning of the cycle
|
||||
+ [backport] Record cycle start/end to avoid continuous
|
||||
periodic GC
|
||||
+ [backport] Record Shenandoah events in hs_err events section
|
||||
+ [backport] Refactor allocation failure and explicit GC
|
||||
handling
|
||||
+ [backport] Refactor allocation metadata handling
|
||||
+ [backport] Refactor FreeSet rebuilding into the single source
|
||||
+ [backport] Refactoring GC phase and heap allocation tracking
|
||||
out of policy
|
||||
+ [backport] Refactor uncommit handling: react on explicit GCs,
|
||||
feature kill flag, etc
|
||||
+ [backport] Refactor worker timings into ShenandoahPhaseTimings
|
||||
+ [backport] ReferenceProcessor is_alive setup is racy
|
||||
+ [backport] Region sampling should lock while gathering region
|
||||
data
|
||||
+ [backport] Rehash VMOperations and cycle driver mechanics for
|
||||
consistency
|
||||
+ [backport] Relax assert in SBS::is_safe()
|
||||
+ [backport] Remove BS:is_safe in favor of logged
|
||||
BS::verify_safe_oop
|
||||
+ [backport] Remove CSetThreshold handling from heuristics
|
||||
+ [backport] Remove FreeSet::add_region, inline into
|
||||
FreeSet::rebuild
|
||||
+ [backport] Remove obsolete check in FreeSet::allocate
|
||||
+ [backport] Remove ShenandoahGCWorkerPerJavaThread flag
|
||||
+ [backport] Remove ShenandoahMarkCompactBarrierSet
|
||||
+ [backport] Rename and cleanup _regions and _free_set uses
|
||||
+ [backport] Rename dynamic heuristics to static
|
||||
+ [backport] Rename *_oop_static/oop_ref to *_forwarded
|
||||
+ [backport] Rename ShenandoahConcurrentThread to
|
||||
ShenandoahControlThread
|
||||
+ [backport] Report all GC status flags in hs_err
|
||||
+ [backport] Report fwdptr size in JNI GetObjectSize
|
||||
+ [backport] Report how much we have failed to allocate during
|
||||
Allocation Failure
|
||||
+ [backport] Report illegal transitions verbosely, and remove
|
||||
some no-op transitions
|
||||
+ [backport] Rewire control loop to avoid double cleanup work
|
||||
+ [backport] Rework shared bool/enum flags with proper types
|
||||
and synchronization
|
||||
+ [backport] Rewrite and fix
|
||||
ShenandoahHeap::marked_object_iterate
|
||||
+ [backport] Rich assertion failure logging
|
||||
+ [backport] Roots verification should take the special roots
|
||||
first
|
||||
+ [backport] RP closures should accept NULL referents
|
||||
+ [backport] Set ShenandoahMinFreeThreshold default to 10%
|
||||
+ [backport] Setup process references and class unloading once
|
||||
before the cycle
|
||||
+ [backport] ShConcurrentThread races with set_gc_state_bit
|
||||
+ [backport] Shenandoah critical native support
|
||||
+ [backport] Shenandoah region/set iterators should not allow
|
||||
copying
|
||||
+ [backport] Shenandoah SA implementation
|
||||
+ [backport] Shenandoah/SPARC barrier stubs
|
||||
+ [backport] ShenandoahVerifyOptoBarriers should not fail with
|
||||
disabled barriers
|
||||
+ [backport] ShenandoahWriteBarrierNode::find_bottom_mem() fix
|
||||
+ [backport] ShenandoahWriteBarrierRB flag to conditionally
|
||||
disable RB on WB fastpath
|
||||
+ [backport] Shenandoah/Zero barrier stubs
|
||||
+ [backport] SieveObjects test is too hostile to verification
|
||||
+ [backport] Single GCTimer shared by all operations
|
||||
+ [backport] Single thread-local GC state flag for all barriers
|
||||
+ [backport] Some smallish ShHeapRegionSet changes
|
||||
+ [backport] Speed up asserts and verification, improve
|
||||
fastdebug builds performance
|
||||
+ [backport] Split live data management for allocations and GCs
|
||||
+ [backport] Static heuristics should be really static and
|
||||
report decisions
|
||||
+ [backport] Static heuristics should use non-zero allocation
|
||||
threshold
|
||||
+ [backport] Store checks should run most of the time
|
||||
+ [backport] Tax-and-Spend allocation pacing
|
||||
+ [backport] Testbug: VerifyJCStressTest leaks memory
|
||||
+ [backport] TestSelectiveBarrierFlags should accept
|
||||
multi-element flag selections
|
||||
+ [backport] TestSelectiveBarrierFlags times out due to too
|
||||
aggressive compilation mode
|
||||
+ [backport] Trim/expand test heap sizes to fit small heaps
|
||||
+ [backport] Trim the TLAB sizes to avoid wasteful retirement
|
||||
under TLAB races
|
||||
+ [backport] Use leftmost region in GC allocations
|
||||
+ [backport] Use os::naked_short_sleep instead of naked Thread
|
||||
events for sleeping
|
||||
+ [backport] Use/sort (cached) RegionData not
|
||||
ShenandoahHeapRegionSet (infrastructure)
|
||||
+ [backport] UX: Cleanup (adaptive) CSet selection message
|
||||
+ [backport] UX: Pacer reports incorrect free size
|
||||
+ [backport] UX: Shorter gc+ergo messages from CSet selection
|
||||
+ [backport] Verifier crashes when reporting multiple
|
||||
forwardings
|
||||
+ [backport] Verifier should check klass pointers before
|
||||
attempting to reach for object size
|
||||
+ [backport] Verifier should print verification label at
|
||||
liveness verification
|
||||
+ [backport] Verify fwdptr accesses during Full GC moves
|
||||
+ [backport] Verify regions status
|
||||
+ [backport] When Shenandoah WB is moved out of loop, connect
|
||||
it to correct loop memory Phi (back out and revisit previous fix)
|
||||
+ [backport] Wipe out ShenandoahStoreCheck implementation
|
||||
+ [backport] Workaround C1 ConstantOopWriteValue bug
|
||||
+ Bitmap size might not be page aligned when large page is used
|
||||
+ Changed claim count to jint
|
||||
+ Cherry-pick JDK-8173013: JVMTI tagged object access needs G1
|
||||
pre-barrier
|
||||
+ Defer cleaning of system dictionary and friends to parallel
|
||||
cleaning phase
|
||||
+ Do not put down update-refs-in-progress flag concurrently
|
||||
+ Fix AArch64 build failure: misplaced #endif
|
||||
+ Fixed Shenandoah 8u build
|
||||
+ Fixed Windows build
|
||||
+ Fix non-PCH build
|
||||
+ Fix non-PCH x86_32 build
|
||||
+ Fix up SPARC and Zero headers for proper locations
|
||||
+ missing barriers in String intrinsics with
|
||||
-ShenandoahOptimizeInstanceFinals
|
||||
-ShenandoahOptimizeStableFinals
|
||||
+ Missing event log for canceled GC
|
||||
+ StringInternCleanup times out
|
||||
+ VerifyJCStressTest should test all heuristics
|
||||
+ Workaround VM crash with JNI Weak Refs handling
|
||||
- Removed patches:
|
||||
* 8038636.patch, 8051972.patch, 8055008.patch, 8074373.patch,
|
||||
8076117.patch, 8157898.patch, 8169201.patch, 8170035.patch,
|
||||
8176183.patch, 8187635.patch, 8188223.patch, 8191239.patch,
|
||||
8193419.patch, 8196224.patch, 8196491.patch, 8196854.patch,
|
||||
8197871.patch, 8197925.patch, 8197943.patch, 8198794.patch,
|
||||
8199406.patch, 8199547.patch, 8200359.patch, 8200666.patch,
|
||||
8201433.patch, 8202585.patch, 8202996.patch, 8203233.patch,
|
||||
8203368.patch, 8205491.patch
|
||||
+ Not needed any more
|
||||
- Modified patch:
|
||||
* java-1_8_0-openjdk-suse-desktop-files.patch
|
||||
- Rediff to changed context
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 26 05:39:58 UTC 2018 - Fridrich Strba <fstrba@suse.com>
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
%{!?aarch64:%global aarch64 aarch64 arm64 armv8}
|
||||
%global jit_arches %{ix86} x86_64 ppc64 ppc64le %{aarch64} %{arm}
|
||||
%global icedtea_version 3.8.0
|
||||
%global icedtea_version 3.9.0
|
||||
%global icedtea_sound_version 1.0.1
|
||||
%global buildoutputdir openjdk.build/
|
||||
# Convert an absolute path to a relative path. Each symbolic link is
|
||||
@ -32,8 +32,8 @@
|
||||
# priority must be 6 digits in total
|
||||
%global priority 1805
|
||||
%global javaver 1.8.0
|
||||
%global updatever 171
|
||||
%global buildver 11
|
||||
%global updatever 181
|
||||
%global buildver 13
|
||||
# Standard JPackage directories and symbolic links.
|
||||
%global sdklnk java-%{javaver}-openjdk
|
||||
%global archname %{sdklnk}
|
||||
@ -203,38 +203,6 @@ Patch1002: icedtea-3.8.0-s390.patch
|
||||
Patch2001: disable-doclint-by-default.patch
|
||||
Patch2002: aarch64.patch
|
||||
|
||||
# Oracle July 2018 CPU backport to jdk8u171
|
||||
Patch5000: 8038636.patch
|
||||
Patch5001: 8051972.patch
|
||||
Patch5002: 8055008.patch
|
||||
Patch5003: 8074373.patch
|
||||
Patch5004: 8076117.patch
|
||||
Patch5005: 8157898.patch
|
||||
Patch5006: 8169201.patch
|
||||
Patch5007: 8170035.patch
|
||||
Patch5008: 8176183.patch
|
||||
Patch5009: 8187635.patch
|
||||
Patch5010: 8188223.patch
|
||||
Patch5011: 8191239.patch
|
||||
Patch5012: 8193419.patch
|
||||
Patch5013: 8196224.patch
|
||||
Patch5014: 8196491.patch
|
||||
Patch5015: 8196854.patch
|
||||
Patch5016: 8197871.patch
|
||||
Patch5017: 8197925.patch
|
||||
Patch5018: 8197943.patch
|
||||
Patch5019: 8198794.patch
|
||||
Patch5020: 8199406.patch
|
||||
Patch5021: 8199547.patch
|
||||
Patch5022: 8200359.patch
|
||||
Patch5023: 8200666.patch
|
||||
Patch5024: 8201433.patch
|
||||
Patch5025: 8202585.patch
|
||||
Patch5026: 8202996.patch
|
||||
Patch5027: 8203233.patch
|
||||
Patch5028: 8203368.patch
|
||||
Patch5029: 8205491.patch
|
||||
|
||||
BuildRequires: alsa-lib-devel
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
@ -581,37 +549,6 @@ patch -p0 -i %{PATCH103}
|
||||
patch -p0 -i %{PATCH2001}
|
||||
patch -p0 -i %{PATCH2002}
|
||||
|
||||
patch -p1 -i %{PATCH5000}
|
||||
patch -p1 -i %{PATCH5001}
|
||||
patch -p1 -i %{PATCH5002}
|
||||
patch -p1 -i %{PATCH5003}
|
||||
patch -p1 -i %{PATCH5004}
|
||||
patch -p1 -i %{PATCH5005}
|
||||
patch -p1 -i %{PATCH5006}
|
||||
patch -p1 -i %{PATCH5007}
|
||||
patch -p1 -i %{PATCH5008}
|
||||
patch -p1 -i %{PATCH5009}
|
||||
patch -p1 -i %{PATCH5010}
|
||||
patch -p1 -i %{PATCH5011}
|
||||
patch -p1 -i %{PATCH5012}
|
||||
patch -p1 -i %{PATCH5013}
|
||||
patch -p1 -i %{PATCH5014}
|
||||
patch -p1 -i %{PATCH5015}
|
||||
patch -p1 -i %{PATCH5016}
|
||||
patch -p1 -i %{PATCH5017}
|
||||
patch -p1 -i %{PATCH5018}
|
||||
patch -p1 -i %{PATCH5019}
|
||||
patch -p1 -i %{PATCH5020}
|
||||
patch -p1 -i %{PATCH5021}
|
||||
patch -p1 -i %{PATCH5022}
|
||||
patch -p1 -i %{PATCH5023}
|
||||
patch -p1 -i %{PATCH5024}
|
||||
patch -p1 -i %{PATCH5025}
|
||||
patch -p1 -i %{PATCH5026}
|
||||
patch -p1 -i %{PATCH5027}
|
||||
patch -p1 -i %{PATCH5028}
|
||||
patch -p1 -i %{PATCH5029}
|
||||
|
||||
(cd openjdk/common/autoconf
|
||||
bash ./autogen.sh
|
||||
)
|
||||
@ -769,7 +706,7 @@ cp -a %{buildoutputdir}/docs %{buildroot}%{_javadocdir}/%{sdklnk}
|
||||
for s in 16 24 32 48 ; do
|
||||
install -D -p -m 644 \
|
||||
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
|
||||
%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
|
||||
%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-openjdk.png
|
||||
done
|
||||
|
||||
# Install desktop files.
|
||||
@ -1104,7 +1041,7 @@ fi
|
||||
%files -f %{name}.files
|
||||
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}
|
||||
%dir %{_datadir}/icons/hicolor
|
||||
%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
|
||||
%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-openjdk.png
|
||||
|
||||
%files headless -f %{name}.files-headless
|
||||
%dir %{_jvmdir}
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c0d32871517adec2c04e6ac0674463eae23318aafc5f88486245a761c39f24c
|
||||
size 2287836
|
||||
oid sha256:20e821b18d1415920d3b53bff7faba1d76fe82fdbe08359f8a68c2ff5b17c56d
|
||||
size 2289624
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7bf19c1bab92ecd5710dd44039500f3b298c7603048d49d7acf120705f5fc3fa
|
||||
size 2270928
|
||||
oid sha256:5003bc7110d256af32dcd649318f927cba7260938e029e71c222f4aa13e780b2
|
||||
size 2272684
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c0740f960e5c295bb04283a3d5696d453e90761900035423f8bcc546d0483ae6
|
||||
size 39146448
|
||||
oid sha256:496b164f739f37ef241faea8329be9654b92c42633a9849f5a45b4bedf015337
|
||||
size 39194584
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ae26e4637807be7ac63bba80062509961f4b8b2d72090d9d69a3c0f46df10bf9
|
||||
size 2070064
|
||||
oid sha256:0910b84754e5c36ab93acd2f617a8cb6095a4db76130de001193dca93a96af03
|
||||
size 2071464
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:66f3632730c8f79d3a24b2ec034d4129c7042d0408e6020a5f2905ffd2db5fd2
|
||||
size 2317148
|
||||
oid sha256:170f328f57bc1efe50c31bfcee459e15cfb251f77a67c1f6a69d8634e51f8138
|
||||
size 2314292
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ee0b75534bc84d121b9aa36e6bde435f02c7f5c5098cf1874f8c637e762dace0
|
||||
size 335928
|
||||
oid sha256:0889cdfb8620950bc9922ef58df8313dc85b5be27dd515bfbfcfbc1bce1a1f46
|
||||
size 338056
|
||||
|
Loading…
x
Reference in New Issue
Block a user