8156192: Provider#compute and #merge methods expect wrong permission & #compute ClassCastException even with wrong permission.
Reviewed-by: mullan, jnimeh
--- a/jdk/src/java.base/share/classes/java/security/Provider.java Wed Aug 17 21:14:39 2016 +0100
+++ b/jdk/src/java.base/share/classes/java/security/Provider.java Wed Aug 17 16:03:52 2016 -0700
@@ -601,7 +601,7 @@
public synchronized Object compute(Object key, BiFunction<? super Object,
? super Object, ? extends Object> remappingFunction) {
check("putProviderProperty." + name);
- check("removeProviderProperty" + name);
+ check("removeProviderProperty." + name);
if (debug != null) {
debug.println("Compute " + name + " provider property " + key);
@@ -632,7 +632,7 @@
public synchronized Object computeIfAbsent(Object key, Function<? super Object,
? extends Object> mappingFunction) {
check("putProviderProperty." + name);
- check("removeProviderProperty" + name);
+ check("removeProviderProperty." + name);
if (debug != null) {
debug.println("ComputeIfAbsent " + name + " provider property " +
@@ -662,7 +662,7 @@
public synchronized Object computeIfPresent(Object key, BiFunction<? super Object,
? super Object, ? extends Object> remappingFunction) {
check("putProviderProperty." + name);
- check("removeProviderProperty" + name);
+ check("removeProviderProperty." + name);
if (debug != null) {
debug.println("ComputeIfPresent " + name + " provider property " +
@@ -695,7 +695,7 @@
public synchronized Object merge(Object key, Object value, BiFunction<? super Object,
? super Object, ? extends Object> remappingFunction) {
check("putProviderProperty." + name);
- check("removeProviderProperty" + name);
+ check("removeProviderProperty." + name);
if (debug != null) {
debug.println("Merge " + name + " provider property " + key);
@@ -904,8 +904,8 @@
if (!checkLegacy(key)) {
return null;
}
- legacyStrings.computeIfAbsent((String) key,
- (Function<? super String, ? extends String>) remappingFunction);
+ legacyStrings.compute((String) key,
+ (BiFunction<? super String,? super String, ? extends String>) remappingFunction);
}
return super.compute(key, remappingFunction);
}