Fridrich Strba 2018-09-18 09:30:47 +00:00 committed by Git OBS Bridge
parent dd70b5a679
commit 76feb4d312
32 changed files with 8186 additions and 1 deletions

367
8038636.patch Normal file
View File

@ -0,0 +1,367 @@
--- 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();
+ }
+}

18
8051972.patch Normal file
View File

@ -0,0 +1,18 @@
--- 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 Normal file

File diff suppressed because it is too large Load Diff

74
8074373.patch Normal file
View File

@ -0,0 +1,74 @@
--- 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 Normal file
View File

@ -0,0 +1,390 @@
--- 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");
+ }
+ }
+ }
+
+ }
+}

102
8078628.patch Normal file
View File

@ -0,0 +1,102 @@
--- icedtea-3.8.0/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp 2018-09-18 09:18:59.322369639 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp 2018-09-18 09:19:28.666529064 +0200
@@ -28,6 +28,8 @@
#include "interpreter/cppInterpreter.hpp"
+#include "interpreter/cppInterpreter.hpp"
+
class ZeroEntry {
public:
ZeroEntry() {
--- icedtea-3.8.0/openjdk/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp 2018-09-18 09:18:59.322369639 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp 2018-09-18 09:20:49.778969734 +0200
@@ -26,6 +26,7 @@
#include "precompiled.hpp"
#include "assembler_zero.inline.hpp"
#include "entry_zero.hpp"
+#include "interpreter/cppInterpreter.hpp"
#include "memory/resourceArea.hpp"
#include "nativeInst_zero.hpp"
#include "oops/oop.inline.hpp"
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeCache.cpp 2018-09-18 09:18:59.346369770 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeCache.cpp 2018-09-18 09:19:28.670529085 +0200
@@ -41,6 +41,7 @@
#include "oops/oop.inline.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/icache.hpp"
#include "runtime/java.hpp"
#include "runtime/mutexLocker.hpp"
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp 2018-09-18 09:18:59.354369813 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp 2018-09-18 09:19:28.670529085 +0200
@@ -34,6 +34,9 @@
#endif
#ifdef CC_INTERP
+#ifdef TARGET_ARCH_zero
+# include "entry_zero.hpp"
+#endif
class CppInterpreterGenerator: public AbstractInterpreterGenerator {
protected:
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/interpreter/interpreter.hpp 2018-09-18 09:18:59.354369813 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/interpreter/interpreter.hpp 2018-09-18 09:19:28.670529085 +0200
@@ -28,11 +28,9 @@
#include "code/stubs.hpp"
#include "interpreter/cppInterpreter.hpp"
#include "interpreter/templateInterpreter.hpp"
-#ifdef ZERO
#ifdef TARGET_ARCH_zero
# include "entry_zero.hpp"
#endif
-#endif
// This file contains the platform-independent parts
// of the interpreter and the interpreter generator.
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/runtime/frame.hpp 2018-09-18 09:18:59.362369857 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/runtime/frame.hpp 2018-09-18 09:19:28.670529085 +0200
@@ -47,11 +47,9 @@
# include "adfiles/adGlobals_ppc_64.hpp"
#endif
#endif // COMPILER2
-#ifdef ZERO
#ifdef TARGET_ARCH_zero
# include "stack_zero.hpp"
#endif
-#endif
typedef class BytecodeInterpreter* interpreterState;
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/runtime/frame.inline.hpp 2018-09-18 09:18:59.362369857 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/runtime/frame.inline.hpp 2018-09-18 09:19:28.670529085 +0200
@@ -49,14 +49,12 @@
#ifdef TARGET_ARCH_ppc
# include "jniTypes_ppc.hpp"
#endif
-#ifdef ZERO
#ifdef TARGET_ARCH_zero
# include "entryFrame_zero.hpp"
# include "fakeStubFrame_zero.hpp"
# include "interpreterFrame_zero.hpp"
# include "sharkFrame_zero.hpp"
#endif
-#endif
// This file holds platform-independent bodies of inline functions for frames.
--- icedtea-3.8.0/openjdk/hotspot/src/share/vm/runtime/thread.hpp 2018-09-18 09:18:59.366369878 +0200
+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/runtime/thread.hpp 2018-09-18 09:19:28.670529085 +0200
@@ -51,11 +51,9 @@
#include "gc_implementation/g1/dirtyCardQueue.hpp"
#include "gc_implementation/g1/satbQueue.hpp"
#endif // INCLUDE_ALL_GCS
-#ifdef ZERO
#ifdef TARGET_ARCH_zero
# include "stack_zero.hpp"
#endif
-#endif
class ThreadSafepointState;
class ThreadProfiler;

11
8157898.patch Normal file
View File

@ -0,0 +1,11 @@
--- 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.*;

11
8169201.patch Normal file
View File

@ -0,0 +1,11 @@
--- 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");

16
8170035.patch Normal file
View File

@ -0,0 +1,16 @@
--- 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")) {

37
8176183.patch Normal file
View File

@ -0,0 +1,37 @@
--- 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);

10
8187635.patch Normal file
View File

@ -0,0 +1,10 @@
--- 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;

12
8188223.patch Normal file
View File

@ -0,0 +1,12 @@
--- 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();

41
8191239.patch Normal file
View File

@ -0,0 +1,41 @@
--- 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 Normal file
View File

@ -0,0 +1,600 @@
--- 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);
}

40
8196224.patch Normal file
View File

@ -0,0 +1,40 @@
--- 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 Normal file
View File

@ -0,0 +1,239 @@
--- 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.
*/

28
8196854.patch Normal file
View File

@ -0,0 +1,28 @@
--- 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 {

72
8197871.patch Normal file
View File

@ -0,0 +1,72 @@
--- 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), \

79
8197925.patch Normal file
View File

@ -0,0 +1,79 @@
--- 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;
}
}

45
8197943.patch Normal file
View File

@ -0,0 +1,45 @@
--- 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();

32
8198794.patch Normal file
View File

@ -0,0 +1,32 @@
--- 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 Normal file
View File

@ -0,0 +1,223 @@
--- 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);

11
8199547.patch Normal file
View File

@ -0,0 +1,11 @@
--- 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 Normal file

File diff suppressed because it is too large Load Diff

80
8200666.patch Normal file
View File

@ -0,0 +1,80 @@
--- 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 Normal file
View File

@ -0,0 +1,101 @@
--- 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 Normal file
View File

@ -0,0 +1,183 @@
--- 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.

10
8202996.patch Normal file
View File

@ -0,0 +1,10 @@
--- 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 Normal file
View File

@ -0,0 +1,426 @@
--- 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 Normal file
View File

@ -0,0 +1,159 @@
--- 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() {
+ }
+ }
+}

17
8205491.patch Normal file
View File

@ -0,0 +1,17 @@
--- 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;

View File

@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@ -203,6 +203,39 @@ Patch1000: icedtea-3.0.1-sunec.patch
Patch1001: java-1_8_0-openjdk-suse-desktop-files.patch
Patch2001: disable-doclint-by-default.patch
Patch2002: aarch64.patch
#
Patch5000: 8038636.patch
Patch5001: 8051972.patch
Patch5002: 8055008.patch
Patch5003: 8074373.patch
Patch5004: 8076117.patch
Patch5005: 8078628.patch
Patch5006: 8157898.patch
Patch5007: 8169201.patch
Patch5008: 8170035.patch
Patch5009: 8176183.patch
Patch5010: 8187635.patch
Patch5011: 8188223.patch
Patch5012: 8191239.patch
Patch5013: 8193419.patch
Patch5014: 8196224.patch
Patch5015: 8196491.patch
Patch5016: 8196854.patch
Patch5017: 8197871.patch
Patch5018: 8197925.patch
Patch5019: 8197943.patch
Patch5020: 8198794.patch
Patch5021: 8199406.patch
Patch5022: 8199547.patch
Patch5023: 8200359.patch
Patch5024: 8200666.patch
Patch5025: 8201433.patch
Patch5026: 8202585.patch
Patch5027: 8202996.patch
Patch5028: 8203233.patch
Patch5029: 8203368.patch
Patch5030: 8205491.patch
#
BuildRequires: alsa-lib-devel
BuildRequires: autoconf
BuildRequires: automake
@ -551,6 +584,38 @@ patch -p0 -i %{PATCH104}
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}
patch -p1 -i %{PATCH5030}
(cd openjdk/common/autoconf
bash ./autogen.sh
)