Skip to content

Commit 992ef66

Browse files
authored
Merge pull request ibmruntimes#522 from KostasTsiounis/check_provider_services
Check if service is allowed in RestrictedSecurity mode
2 parents cfaa5e5 + b4e2f0b commit 992ef66

2 files changed

Lines changed: 17 additions & 10 deletions

File tree

src/java.base/share/classes/java/security/Provider.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,10 +1294,14 @@ public Service getService(String type, String algorithm) {
12941294
Service s = serviceMap.get(key);
12951295
if (s == null) {
12961296
s = legacyMap.get(key);
1297-
if (s != null && !s.isValid()) {
1297+
if (s != null && (!s.isValid() || !RestrictedSecurity.isServiceAllowed(s))) {
12981298
legacyMap.remove(key, s);
12991299
return null;
13001300
}
1301+
} else {
1302+
if (!RestrictedSecurity.isServiceAllowed(s)) {
1303+
return null;
1304+
}
13011305
}
13021306

13031307
if (s != null && SecurityProviderServiceEvent.isTurnedOn()) {
@@ -1334,19 +1338,24 @@ public Set<Service> getServices() {
13341338
if (serviceSet == null || legacyChanged || servicesChanged) {
13351339
Set<Service> set = new LinkedHashSet<>();
13361340
if (!serviceMap.isEmpty()) {
1337-
set.addAll(serviceMap.values());
1341+
serviceMap.values().forEach(service -> {
1342+
if (RestrictedSecurity.isServiceAllowed(service)) {
1343+
// If allowed by RestrictedSecurity, add it to set.
1344+
set.add(service);
1345+
}
1346+
});
13381347
}
13391348
if (!legacyMap.isEmpty()) {
13401349
legacyMap.entrySet().forEach(entry -> {
1341-
if (!entry.getValue().isValid()) {
1350+
if (!entry.getValue().isValid() || !RestrictedSecurity.isServiceAllowed(entry.getValue())) {
13421351
legacyMap.remove(entry.getKey(), entry.getValue());
13431352
} else {
13441353
set.add(entry.getValue());
13451354
}
13461355
});
13471356
}
13481357
serviceSet = Collections.unmodifiableSet(set);
1349-
servicesChanged = false;
1358+
servicesChanged = RestrictedSecurity.isEnabled();
13501359
legacyChanged = false;
13511360
}
13521361
return serviceSet;

src/java.base/share/classes/sun/security/jca/ProviderList.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,7 @@ public Service getService(String type, String name) {
402402
for (i = 0; i < pList.size(); i++) {
403403
Provider p = getProvider(pList.get(i).provider);
404404
Service s = p.getService(type, name);
405-
if ((s != null) && RestrictedSecurity.isServiceAllowed(s)) {
406-
// We found a service that is allowed in restricted security mode.
405+
if (s != null) {
407406
return s;
408407
}
409408
}
@@ -412,8 +411,7 @@ public Service getService(String type, String name) {
412411
for (i = 0; i < configs.length; i++) {
413412
Provider p = getProvider(i);
414413
Service s = p.getService(type, name);
415-
if ((s != null) && RestrictedSecurity.isServiceAllowed(s)) {
416-
// We found a service that is allowed in restricted security mode.
414+
if (s != null) {
417415
return s;
418416
}
419417
}
@@ -549,14 +547,14 @@ private Service tryGet(int index) {
549547
if (type != null) {
550548
// simple lookup
551549
Service s = p.getService(type, algorithm);
552-
if ((s != null) && RestrictedSecurity.isServiceAllowed(s)) {
550+
if (s != null) {
553551
addService(s);
554552
}
555553
} else {
556554
// parallel lookup
557555
for (ServiceId id : ids) {
558556
Service s = p.getService(id.type, id.algorithm);
559-
if ((s != null) && RestrictedSecurity.isServiceAllowed(s)) {
557+
if (s != null) {
560558
addService(s);
561559
}
562560
}

0 commit comments

Comments
 (0)