[ 
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)

Reply via email to