[
https://issues.apache.org/jira/browse/WW-5288?focusedWorklogId=848499&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-848499
]
ASF GitHub Bot logged work on WW-5288:
--------------------------------------
Author: ASF GitHub Bot
Created on: 02/Mar/23 04:08
Start Date: 02/Mar/23 04:08
Worklog Time Spent: 10m
Work Description: kusalk commented on code in PR #664:
URL: https://github.com/apache/struts/pull/664#discussion_r1122577804
##########
core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java:
##########
@@ -197,51 +208,61 @@ protected boolean checkEnumAccess(Object target, Member
member) {
return false;
}
- protected boolean isPackageExcluded(Package targetPackage, Package
memberPackage) {
- if (targetPackage == null || memberPackage == null) {
- LOG.warn("The use of the default (unnamed) package is
discouraged!");
+ protected boolean isPackageExcluded(Class<?> targetClass, Class<?>
memberClass) {
+ if (targetClass == null || memberClass == null) {
+ throw new IllegalArgumentException(
+ "Parameters should never be null - if member is static,
targetClass should be the same as memberClass.");
}
- String targetPackageName = targetPackage == null ? "" :
targetPackage.getName();
- String memberPackageName = memberPackage == null ? "" :
memberPackage.getName();
+ Set<Class<?>> classesToCheck = new HashSet<>();
+ classesToCheck.add(targetClass);
+ classesToCheck.add(memberClass);
- for (Pattern pattern : excludedPackageNamePatterns) {
- if (pattern.matcher(targetPackageName).matches() ||
pattern.matcher(memberPackageName).matches()) {
+ for (Class<?> clazz : classesToCheck) {
+ if (!isExcludedPackageExempt(clazz) &&
(isExcludedPackageNamePatterns(clazz) || isExcludedPackageNames(clazz))) {
Review Comment:
Exemption must now exist for both classes (target and member) if they both
match a banned package
Issue Time Tracking
-------------------
Worklog Id: (was: 848499)
Time Spent: 20m (was: 10m)
> Make excluded package exemption logic more strict
> -------------------------------------------------
>
> Key: WW-5288
> URL: https://issues.apache.org/jira/browse/WW-5288
> Project: Struts 2
> Issue Type: Improvement
> Components: Core
> Reporter: Kusal Kithul-Godage
> Priority: Minor
> Fix For: 6.2.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Following on from the discussion in the comments on WW-5268 - exempting
> classes from excluded packages should only be done if unavoidable.
> Given this, I realised we should make the exemption logic more strict to
> prevent incorrect use and inadvertent exempting of more OGNL expressions than
> intended.
> * Currently, the exempted classes also match against superclasses. This is
> unnecessary and we can match against only the specific class.
> * Currently, an exemption against either the target or member class suffices.
> This can be made more strict by requiring an exemption for the class which
> matches the excluded package specifically, which could be either or both.
> * The JavaDoc for the options should be very explicit in what each
> configuration option achieves to prevent incorrect uses.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)