casbin / jcasbin

An authorization library that supports access control models like ACL, RBAC, ABAC in Java

Home Page:https://casbin.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NPE when loading model of RBAC with domain and keyMatch

striantafyllou opened this issue · comments

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

Thank you very much !