diff --git a/8207160-ClassReader-adjustMethodParams-can-potentially-return-null-if-the-args-list-is-empty.patch b/8207160-ClassReader-adjustMethodParams-can-potentially-return-null-if-the-args-list-is-empty.patch new file mode 100755 index 0000000000000000000000000000000000000000..f95d845b3d32c5d6530c1dac53d937134042e8c9 --- /dev/null +++ b/8207160-ClassReader-adjustMethodParams-can-potentially-return-null-if-the-args-list-is-empty.patch @@ -0,0 +1,168 @@ +diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java +index 5a1d3b900..ab327bf9a 100644 +--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ++++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java +@@ -2471,6 +2471,9 @@ public class ClassReader { + } + + private List adjustMethodParams(long flags, List args) { ++ if (args.isEmpty()) { ++ return args; ++ } + boolean isVarargs = (flags & VARARGS) != 0; + if (isVarargs) { + Type varargsElem = args.last(); +diff --git a/test/langtools/tools/javac/AvoidNPEAtClassReader/AvoidNPEAtClassReaderTest.java b/test/langtools/tools/javac/AvoidNPEAtClassReader/AvoidNPEAtClassReaderTest.java +new file mode 100644 +index 000000000..3b47d6944 +--- /dev/null ++++ b/test/langtools/tools/javac/AvoidNPEAtClassReader/AvoidNPEAtClassReaderTest.java +@@ -0,0 +1,43 @@ ++/* ++ * 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. ++ */ ++ ++/** ++ * @test ++ * @bug 8207160 ++ * @summary ClassReader::adjustMethodParams can potentially return null if the args list is empty ++ * @compile pkg/Outer.jasm pkg/Outer$Inner.jasm AvoidNPEAtClassReaderTest.java ++ */ ++ ++ ++/** this test is checking that javac doesn't fail with NPE when reading inner classes with constructors ++ * that doesn't have as a parameter a reference to the outer class. Such constructors were generated by ++ * versions of javac previous to JDK7. ++ */ ++ ++import pkg.*; ++ ++public class AvoidNPEAtClassReaderTest { ++ public void bar(Outer outer) { ++ Object stuff = outer.foo(); ++ } ++} +diff --git a/test/langtools/tools/javac/AvoidNPEAtClassReader/pkg/Outer$Inner.jasm b/test/langtools/tools/javac/AvoidNPEAtClassReader/pkg/Outer$Inner.jasm +new file mode 100644 +index 000000000..23fe2eb4b +--- /dev/null ++++ b/test/langtools/tools/javac/AvoidNPEAtClassReader/pkg/Outer$Inner.jasm +@@ -0,0 +1,42 @@ ++/* ++ * 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. ++ */ ++ ++package pkg; ++ ++super public final class Outer$Inner ++ version 55:0 ++{ ++ ++final synthetic Field this$0:"Lpkg/Outer;"; ++ ++public Method "":"()V" ++ stack 1 locals 1 ++{ ++ aload_0; ++ invokespecial Method java/lang/Object."":"()V"; ++ return; ++} ++ ++public final InnerClass Inner=class Outer$Inner of class Outer; ++ ++} // end Class Outer$Inner +diff --git a/test/langtools/tools/javac/AvoidNPEAtClassReader/pkg/Outer.jasm b/test/langtools/tools/javac/AvoidNPEAtClassReader/pkg/Outer.jasm +new file mode 100644 +index 000000000..13baaf761 +--- /dev/null ++++ b/test/langtools/tools/javac/AvoidNPEAtClassReader/pkg/Outer.jasm +@@ -0,0 +1,48 @@ ++/* ++ * 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. ++ */ ++ ++package pkg; ++ ++super public class Outer ++ version 55:0 ++{ ++ ++ ++public Method "":"()V" ++ stack 1 locals 1 ++{ ++ aload_0; ++ invokespecial Method java/lang/Object."":"()V"; ++ return; ++} ++ ++public Method foo:"()Lpkg/Outer$Inner;" ++ stack 1 locals 1 ++{ ++ aconst_null; ++ areturn; ++} ++ ++public final InnerClass Inner=class Outer$Inner of class Outer; ++ ++} // end Class Outer +-- +2.19.1 + diff --git a/java-11-openjdk.spec b/java-11-openjdk.spec index 9c2da7a5f02be66ef34162043b8eb08a0556d655..f87c5dd83698773d97b126edb0e395801b60a97b 100644 --- a/java-11-openjdk.spec +++ b/java-11-openjdk.spec @@ -735,7 +735,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release} Name: java-%{javaver}-%{origin} Version: %{newjavaver}.%{buildver} -Release: 5 +Release: 6 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # and this change was brought into RHEL-4. java-1.5.0-ibm packages # also included the epoch in their virtual provides. This created a @@ -837,6 +837,7 @@ Patch50: 8248336-AArch64-C2-offset-overflow-in-BoxLockNode-em.patch Patch51: 8255781-Bump-patch-update-version-for-OpenJDK-jdk-11.0.9.1.patch Patch52: 8250861-Crash-in-MinINode-Ideal.patch Patch53: 8236512-PKCS11-Connection-closed-after-Cipher-doFinal-and-NoPadding.patch +Patch54: 8207160-ClassReader-adjustMethodParams-can-potentially-return-null-if-the-args-list-is-empty.patch BuildRequires: autoconf BuildRequires: alsa-lib-devel @@ -1103,6 +1104,7 @@ pushd %{top_level_dir_name} %patch51 -p1 %patch52 -p1 %patch53 -p1 +%patch54 -p1 popd # openjdk %patch1000 @@ -1605,6 +1607,9 @@ require "copy_jdk_configs.lua" %changelog +* Wed Dec 23 2020 eapen - 1:11.0.9.11-6 +- add 8207160-ClassReader-adjustMethodParams-can-potentially-return-null-if-the-args-list-is-empty.patch + * Thu Dec 22 2020 aijm - 1:11.0.9.11-5 - add 8236512-PKCS11-Connection-closed-after-Cipher-doFinal-and-NoPadding.patch