diff -r 7c17199fa37d src/java.base/share/classes/java/util/spi/ToolProvider.java
--- a/src/java.base/share/classes/java/util/spi/ToolProvider.java Fri Feb 15 08:21:08 2019 -0500
+++ b/src/java.base/share/classes/java/util/spi/ToolProvider.java Sat Feb 16 00:57:54 2019 +0100
@@ -126,8 +126,9 @@
default int run(PrintStream out, PrintStream err, String... args) {
Objects.requireNonNull(out);
Objects.requireNonNull(err);
+ Objects.requireNonNull(args);
for (String arg : args) {
- Objects.requireNonNull(args);
+ Objects.requireNonNull(arg);
}
PrintWriter outWriter = new PrintWriter(out);
diff -r 7c17199fa37d test/jdk/java/util/spi/ToolProviderTest.java
--- a/test/jdk/java/util/spi/ToolProviderTest.java Fri Feb 15 08:21:08 2019 -0500
+++ b/test/jdk/java/util/spi/ToolProviderTest.java Sat Feb 16 00:57:54 2019 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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
@@ -46,16 +46,38 @@
void run() throws Exception {
initServices();
+ testNullArgs();
+
System.out.println("test without security manager present:");
- test();
+ testSecurityManager();
System.setSecurityManager(new SecurityManager());
System.out.println("test with security manager present:");
- test();
+ testSecurityManager();
}
- private void test() throws Exception {
+ private void testNullArgs() throws Exception {
+ ToolProvider testProvider = ToolProvider.findFirst("test").get();
+
+ // args array null check
+ try {
+ testProvider.run(System.out, System.err, (String[]) null);
+ throw new Error("NullPointerException not thrown");
+ } catch (NullPointerException e) {
+ // expected
+ }
+
+ // args array elements null check
+ try {
+ testProvider.run(System.out, System.err, (String) null);
+ throw new Error("NullPointerException not thrown");
+ } catch (NullPointerException e) {
+ // expected
+ }
+ }
+
+ private void testSecurityManager() throws Exception {
ToolProvider testProvider = ToolProvider.findFirst("test").get();
int rc = testProvider.run(System.out, System.err, "hello test");
if (rc != 0) {
@@ -92,7 +114,7 @@
// system property
System.getProperty("java.home");
if (haveSecurityManager) {
- throw new Error("exception exception not thrown");
+ throw new Error("SecurityException not thrown");
}
} catch (SecurityException e) {
if (!haveSecurityManager) {