OpenJDK / jdk / hs
changeset 42780:7781326fff20
8170876: NPE in JCE engine classes with java.security.debug=provider
Reviewed-by: mullan
Contributed-by: adam.petcher@oracle.com
author | mullan |
---|---|
date | Tue, 20 Dec 2016 17:13:34 -0500 |
parents | 6ba2ec372a88 |
children | 1d6994f03362 |
files | jdk/src/java.base/share/classes/java/security/KeyStore.java jdk/src/java.base/share/classes/java/security/MessageDigest.java jdk/src/java.base/share/classes/java/security/SecureRandom.java jdk/src/java.base/share/classes/javax/crypto/Cipher.java jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java jdk/src/java.base/share/classes/javax/crypto/Mac.java jdk/test/java/security/Signature/NoProvider.java jdk/test/javax/crypto/NullCipher/TestNPE.java |
diffstat | 9 files changed, 46 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/java.base/share/classes/java/security/KeyStore.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/java/security/KeyStore.java Tue Dec 20 17:13:34 2016 -0500 @@ -824,10 +824,14 @@ if (!skipDebug && pdebug != null) { pdebug.println("KeyStore." + type.toUpperCase() + " type from: " + - this.provider.getName()); + getProviderName()); } } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a keystore object of the specified type. *
--- a/jdk/src/java.base/share/classes/java/security/MessageDigest.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/java/security/MessageDigest.java Tue Dec 20 17:13:34 2016 -0500 @@ -430,13 +430,17 @@ return digest(); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a string representation of this message digest object. */ public String toString() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream p = new PrintStream(baos); - p.print(algorithm+" Message Digest from "+provider.getName()+", "); + p.print(algorithm+" Message Digest from "+getProviderName()+", "); switch (state) { case INITIAL: p.print("<initialized>");
--- a/jdk/src/java.base/share/classes/java/security/SecureRandom.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/java/security/SecureRandom.java Tue Dec 20 17:13:34 2016 -0500 @@ -310,10 +310,14 @@ if (!skipDebug && pdebug != null) { pdebug.println("SecureRandom." + algorithm + - " algorithm from: " + this.provider.getName()); + " algorithm from: " + getProviderName()); } } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a {@code SecureRandom} object that implements the specified * Random Number Generator (RNG) algorithm.
--- a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java Tue Dec 20 17:13:34 2016 -0500 @@ -611,6 +611,10 @@ return getInstance(transformation, p); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns a {@code Cipher} object that implements the specified * transformation. @@ -1278,7 +1282,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -1421,7 +1425,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -1564,7 +1568,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -1754,7 +1758,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("Cipher." + transformation + " " + getOpmodeString(opmode) + " algorithm from: " + - this.provider.getName()); + getProviderName()); } }
--- a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java Tue Dec 20 17:13:34 2016 -0500 @@ -484,7 +484,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("KeyAgreement." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -517,6 +517,10 @@ init(key, params, JceSecurity.RANDOM); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Initializes this key agreement with the given key, set of * algorithm parameters, and source of randomness. @@ -545,7 +549,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("KeyAgreement." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } }
--- a/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java Tue Dec 20 17:13:34 2016 -0500 @@ -154,7 +154,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("KeyGenerator." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -172,10 +172,14 @@ if (!skipDebug && pdebug != null) { pdebug.println("KeyGenerator." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Returns the algorithm name of this {@code KeyGenerator} object. *
--- a/jdk/src/java.base/share/classes/javax/crypto/Mac.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/src/java.base/share/classes/javax/crypto/Mac.java Tue Dec 20 17:13:34 2016 -0500 @@ -415,6 +415,10 @@ return spi.engineGetMacLength(); } + private String getProviderName() { + return (provider == null) ? "(no provider)" : provider.getName(); + } + /** * Initializes this {@code Mac} object with the given key. * @@ -437,7 +441,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("Mac." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } } @@ -464,7 +468,7 @@ if (!skipDebug && pdebug != null) { pdebug.println("Mac." + algorithm + " algorithm from: " + - this.provider.getName()); + getProviderName()); } }
--- a/jdk/test/java/security/Signature/NoProvider.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/test/java/security/Signature/NoProvider.java Tue Dec 20 17:13:34 2016 -0500 @@ -25,7 +25,7 @@ * @test * @bug 8165751 * @summary Verify that that a subclass of Signature that does not contain a - * provider can be used verify. + * provider can be used to verify. * @run main/othervm -Djava.security.debug=provider NoProvider */
--- a/jdk/test/javax/crypto/NullCipher/TestNPE.java Tue Dec 20 13:46:44 2016 -0800 +++ b/jdk/test/javax/crypto/NullCipher/TestNPE.java Tue Dec 20 17:13:34 2016 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2016, 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 @@ -23,10 +23,12 @@ /* * @test - * @bug 4937853 + * @bug 4937853 8170876 * @summary Make sure normal calls of NullCipher does not throw NPE. * @author Valerie Peng * @key randomness + * @run main TestNPE + * @run main/othervm -Djava.security.debug=provider TestNPE */ import java.util.Arrays; import java.security.AlgorithmParameters;