SimpleAuthenticationInfo.merge does not merge principals if its internal 
principal collection is not mutable
------------------------------------------------------------------------------------------------------------

                 Key: SHIRO-156
                 URL: https://issues.apache.org/jira/browse/SHIRO-156
             Project: Shiro
          Issue Type: Bug
          Components: Authentication (log-in)
    Affects Versions: 0.9
            Reporter: Bryan Turner


In SimpleAuthenticationInfo.merge(AuthenticationInfo), there is the following 
code:

{code}
        if (this.principals == null) {
            this.principals = info.getPrincipals();
        } else {
            if (this.principals instanceof MutablePrincipalCollection) {
                ((MutablePrincipalCollection) 
this.principals).addAll(info.getPrincipals());
            } else {
                this.principals = new 
SimplePrincipalCollection(this.principals);
            }
        }
{code}

The logic in the nested else block appears incorrect. If the current 
"principals" collection is not MutablePrincipalCollection, a new 
SimplePrincipalCollection, which is mutable, is constructed from it. However, 
it does not copy the principals from other.getPrincipals(), which by that point 
in the method is known to be non-null and non-empty, after it makes a mutable 
principal collection.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to