Merge pull request #602 from ikucuze/master

AMQ-8116 ActiveMQWildcardPermission buggy
This commit is contained in:
Jean-Baptiste Onofré 2021-01-07 12:30:25 +01:00 committed by GitHub
commit 33635f516f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 9 deletions

View File

@ -59,18 +59,25 @@ public class ActiveMQWildcardPermission extends WildcardPermission {
} else {
Set<String> thisPart = getParts().get(i);
for (String token : thisPart) {
if (token.equals(WILDCARD_TOKEN)) {
continue;
// all tokens from otherPart must pass at least one token from thisPart
for (String otherToken : otherPart) {
if (!caseSensitive) {
otherToken = otherToken.toLowerCase();
}
for (String otherToken : otherPart) {
if (!caseSensitive) {
otherToken = otherToken.toLowerCase();
boolean otherIsMatched = false;
for (String token : thisPart) {
if (token.equals(WILDCARD_TOKEN)) {
otherIsMatched = true;
break;
}
if (!matches(token, otherToken)) {
return false;
if (matches(token, otherToken)) {
otherIsMatched = true;
break;
}
}
}
if (!otherIsMatched) {
return false;
}
}
i++;
}

View File

@ -117,6 +117,10 @@ public class ActiveMQWildcardPermissionTest {
assertNoMatch("*:ActiveMQ*", "topic:TEST:*");
assertMatch("topic:ActiveMQ.Advisory*", "topic:ActiveMQ.Advisory.Connection:create");
assertMatch("foo?ar", "foobar");
assertMatch("queue:*:read,write", "queue:testqueue:read");
assertMatch("queue:*:read,write", "queue:test*:read,write");
assertNoMatch("queue:*:read,write", "queue:*:read,write,delete");
}
protected static void assertMatch(String pattern, String value) {