16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @bug 8001071
27 * @summary Add simple range check into VM implemenation of Unsafe access methods
28 * @library /test/lib
29 * @modules java.base/jdk.internal.misc
30 * java.management
31 */
32
33 import jdk.test.lib.process.ProcessTools;
34 import jdk.test.lib.process.OutputAnalyzer;
35 import jdk.test.lib.Platform;
36 import jdk.test.lib.unsafe.UnsafeHelper;
37
38 import jdk.internal.misc.Unsafe;
39
40 public class RangeCheck {
41
42 public static void main(String args[]) throws Exception {
43 if (!Platform.isDebugBuild()) {
44 System.out.println("Testing assert which requires a debug build. Passing silently.");
45 return;
46 }
47
48 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
49 true,
50 "-Xmx32m",
51 "--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
52 "-XX:-TransmitErrorReport",
53 "-XX:-CreateCoredumpOnCrash",
54 "-XX:-InlineUnsafeOps", // The compiler intrinsics doesn't have the assert
55 DummyClassWithMainRangeCheck.class.getName());
56
57 OutputAnalyzer output = new OutputAnalyzer(pb.start());
58 output.shouldMatch("assert\\(byte_offset < p_size\\) failed: Unsafe access: offset \\d+ > object's size \\d+");
59 }
60
61 public static class DummyClassWithMainRangeCheck {
62 public static void main(String args[]) throws Exception {
63 Unsafe unsafe = UnsafeHelper.getUnsafe();
64 unsafe.getObject(new DummyClassWithMainRangeCheck(), Short.MAX_VALUE);
65 }
66 }
67 }
|
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @bug 8001071
27 * @summary Add simple range check into VM implemenation of Unsafe access methods
28 * @library /test/lib
29 * @modules java.base/jdk.internal.misc
30 * java.management
31 */
32
33 import jdk.test.lib.process.ProcessTools;
34 import jdk.test.lib.process.OutputAnalyzer;
35 import jdk.test.lib.Platform;
36
37 import jdk.internal.misc.Unsafe;
38
39 public class RangeCheck {
40
41 public static void main(String args[]) throws Exception {
42 if (!Platform.isDebugBuild()) {
43 System.out.println("Testing assert which requires a debug build. Passing silently.");
44 return;
45 }
46
47 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
48 true,
49 "-Xmx32m",
50 "--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
51 "-XX:-TransmitErrorReport",
52 "-XX:-CreateCoredumpOnCrash",
53 "-XX:-InlineUnsafeOps", // The compiler intrinsics doesn't have the assert
54 DummyClassWithMainRangeCheck.class.getName());
55
56 OutputAnalyzer output = new OutputAnalyzer(pb.start());
57 output.shouldMatch("assert\\(byte_offset < p_size\\) failed: Unsafe access: offset \\d+ > object's size \\d+");
58 }
59
60 public static class DummyClassWithMainRangeCheck {
61 public static void main(String args[]) throws Exception {
62 Unsafe unsafe = Unsafe.getUnsafe();
63 unsafe.getObject(new DummyClassWithMainRangeCheck(), Short.MAX_VALUE);
64 }
65 }
66 }
|