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) {

Reply via email to