NPE when loading model of RBAC with domain and keyMatch
striantafyllou opened this issue · comments
Savvas Triantafyllou commented
Loading the following model
[request_definition]
r = sub, dom, obj, act
[policy_definition]
p = sub, dom, obj, act
[role_definition]
g = _, _, _
g2 = _, _
[policy_effect]
e = some(where (p.eft == allow)) && !some(where (p.eft == deny))
[matchers]
m = g(r.sub, p.sub, r.dom) && keyMatch(r.dom, p.dom) && g2(r.obj, p.obj) && r.act == p.act
results in the following NPE
Caused by: java.lang.NullPointerException: Cannot invoke "org.casbin.jcasbin.rbac.RoleManager.clear()" because the return value of "java.util.Map.get(Object)" is null
at org.casbin.jcasbin.main.CoreEnforcer.clearRmMap(CoreEnforcer.java:407)
at org.casbin.jcasbin.main.CoreEnforcer.addNamedDomainMatchingFunc(CoreEnforcer.java:719)
at org.casbin.jcasbin.main.CoreEnforcer.addOrUpdateDomainManagerMatching(CoreEnforcer.java:383)
at org.casbin.jcasbin.main.CoreEnforcer.initRmMap(CoreEnforcer.java:371)
at org.casbin.jcasbin.main.CoreEnforcer.initialize(CoreEnforcer.java:73)
at org.casbin.jcasbin.main.Enforcer.<init>(Enforcer.java:88)
at org.casbin.jcasbin.main.Enforcer.<init>(Enforcer.java:66)
at org.casbin.jcasbin.main.SyncedEnforcer.<init>(SyncedEnforcer.java:69)
at org.casbin.spring.boot.autoconfigure.CasbinAutoConfiguration.enforcer(CasbinAutoConfiguration.java:151)
If I replace keyMatch(r.dom, p.dom) with r.dom == p.dom. , model is loaded without any issue.
Version 1.40.0
JDK 20.0.2
casbin-bot commented
Savvas Triantafyllou commented
Thank you very much !