changeset 57188:9eaef94e74b5

Merge
author psadhukhan
date Tue, 03 Dec 2019 12:42:20 +0530
parents 8991f75a1409 37434b8a1e8e
children 90f3ea9785d5 8081bf6f4309
files
diffstat 3 files changed, 74 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/share/prims/jvmtiImpl.hpp	Tue Dec 03 11:52:31 2019 +0530
+++ b/src/hotspot/share/prims/jvmtiImpl.hpp	Tue Dec 03 12:42:20 2019 +0530
@@ -482,9 +482,9 @@
   // Actually posts the event.
   void post() NOT_JVMTI_RETURN;
   // Sweeper support to keep nmethods from being zombied while in the queue.
-  void nmethods_do(CodeBlobClosure* cf);
+  void nmethods_do(CodeBlobClosure* cf) NOT_JVMTI_RETURN;
   // GC support to keep nmethod from being unloaded while in the queue.
-  void oops_do(OopClosure* f, CodeBlobClosure* cf);
+  void oops_do(OopClosure* f, CodeBlobClosure* cf) NOT_JVMTI_RETURN;
 };
 
 /**
@@ -519,9 +519,9 @@
   static void enqueue(const JvmtiDeferredEvent& event) NOT_JVMTI_RETURN;
   static JvmtiDeferredEvent dequeue() NOT_JVMTI_RETURN_(JvmtiDeferredEvent());
   // Sweeper support to keep nmethods from being zombied while in the queue.
-  static void nmethods_do(CodeBlobClosure* cf);
+  static void nmethods_do(CodeBlobClosure* cf) NOT_JVMTI_RETURN;
   // GC support to keep nmethod from being unloaded while in the queue.
-  static void oops_do(OopClosure* f, CodeBlobClosure* cf);
+  static void oops_do(OopClosure* f, CodeBlobClosure* cf) NOT_JVMTI_RETURN;
 };
 
 // Utility macro that checks for NULL pointers:
--- a/src/java.base/share/classes/sun/security/util/KeyStoreDelegator.java	Tue Dec 03 11:52:31 2019 +0530
+++ b/src/java.base/share/classes/sun/security/util/KeyStoreDelegator.java	Tue Dec 03 12:42:20 2019 +0530
@@ -217,9 +217,9 @@
             try {
                 @SuppressWarnings("deprecation")
                 KeyStoreSpi tmp = primaryKeyStore.newInstance();
+                tmp.engineLoad(bufferedStream, password);
                 keystore = tmp;
                 type = primaryType;
-                keystore.engineLoad(bufferedStream, password);
 
             } catch (Exception e) {
 
@@ -236,11 +236,11 @@
                     }
 
                     @SuppressWarnings("deprecation")
-                    KeyStoreSpi tmp= secondaryKeyStore.newInstance();
+                    KeyStoreSpi tmp = secondaryKeyStore.newInstance();
+                    bufferedStream.reset();
+                    tmp.engineLoad(bufferedStream, password);
                     keystore = tmp;
                     type = secondaryType;
-                    bufferedStream.reset();
-                    keystore.engineLoad(bufferedStream, password);
 
                     if (debug != null) {
                         debug.println("WARNING: switching from " +
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/security/provider/KeyStore/WrongStoreType.java	Tue Dec 03 12:42:20 2019 +0530
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 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
+ * 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 8234744
+ * @summary KeyStore.store can write wrong type of file
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.security.KeyStore;
+
+public class WrongStoreType {
+    public static void main(String ... args) throws Exception {
+
+        char[] password = "changeit".toCharArray();
+        KeyStore ks = KeyStore.getInstance("PKCS12");
+
+        ks.load(null, null);
+        System.out.println(ks.getType());
+
+        Files.createFile(Path.of("emptyfile"));
+        try (InputStream in = new FileInputStream("emptyfile")) {
+            ks.load(in, password);
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+
+        System.out.println(ks.getType());
+        try (OutputStream out = new FileOutputStream("newfile")) {
+            ks.store(out, password);
+        }
+
+        ks = KeyStore.getInstance(new File("newfile"), password);
+        String type = ks.getType();
+        if (!type.equalsIgnoreCase("PKCS12")) {
+            throw new Exception("see storetype " + type);
+        }
+    }
+}