Skip to content

Commit

Permalink
fix: different types of role definition panic (#1304)
Browse files Browse the repository at this point in the history
  • Loading branch information
mtt0 committed Aug 25, 2023
1 parent 985a914 commit e46d08e
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions model/policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,11 @@ func (model Model) BuildIncrementalRoleLinks(rmMap map[string]rbac.RoleManager,
func (model Model) BuildRoleLinks(rmMap map[string]rbac.RoleManager) error {
model.PrintPolicy()
for ptype, ast := range model["g"] {
rm := rmMap[ptype]
err := ast.buildRoleLinks(rm)
if err != nil {
return err
if rm := rmMap[ptype]; rm != nil {
err := ast.buildRoleLinks(rm)
if err != nil {
return err
}
}
}

Expand All @@ -69,10 +70,11 @@ func (model Model) BuildIncrementalConditionalRoleLinks(condRmMap map[string]rba
func (model Model) BuildConditionalRoleLinks(condRmMap map[string]rbac.ConditionalRoleManager) error {
model.PrintPolicy()
for ptype, ast := range model["g"] {
condRm := condRmMap[ptype]
err := ast.buildConditionalRoleLinks(condRm)
if err != nil {
return err
if condRm := condRmMap[ptype]; condRm != nil {
err := ast.buildConditionalRoleLinks(condRm)
if err != nil {
return err
}
}
}

Expand Down

1 comment on commit e46d08e

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: e46d08e Previous: 985a914 Ratio
BenchmarkCachedRaw - ns/op 20.9 ns/op 25.05 ns/op 0.83
BenchmarkCachedRaw - B/op 0 B/op 0 B/op NaN
BenchmarkCachedRaw - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkCachedBasicModel - ns/op 201.8 ns/op 285.8 ns/op 0.71
BenchmarkCachedBasicModel - B/op 104 B/op 104 B/op 1
BenchmarkCachedBasicModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModel - ns/op 202.6 ns/op 279.3 ns/op 0.73
BenchmarkCachedRBACModel - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelSmall - ns/op 221.3 ns/op 301.3 ns/op 0.73
BenchmarkCachedRBACModelSmall - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelSmall - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelMedium - ns/op 225.6 ns/op 330.7 ns/op 0.68
BenchmarkCachedRBACModelMedium - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelMedium - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelLarge - ns/op 224.8 ns/op 273.3 ns/op 0.82
BenchmarkCachedRBACModelLarge - B/op 96 B/op 97 B/op 0.99
BenchmarkCachedRBACModelLarge - allocs/op 3 allocs/op 3 allocs/op 1
BenchmarkCachedRBACModelWithResourceRoles - ns/op 202.5 ns/op 310.9 ns/op 0.65
BenchmarkCachedRBACModelWithResourceRoles - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelWithResourceRoles - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelWithDomains - ns/op 226.2 ns/op 308.8 ns/op 0.73
BenchmarkCachedRBACModelWithDomains - B/op 120 B/op 120 B/op 1
BenchmarkCachedRBACModelWithDomains - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedABACModel - ns/op 3825 ns/op 4690 ns/op 0.82
BenchmarkCachedABACModel - B/op 1525 B/op 1522 B/op 1.00
BenchmarkCachedABACModel - allocs/op 18 allocs/op 18 allocs/op 1
BenchmarkCachedKeyMatchModel - ns/op 230.9 ns/op 331.8 ns/op 0.70
BenchmarkCachedKeyMatchModel - B/op 152 B/op 152 B/op 1
BenchmarkCachedKeyMatchModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedRBACModelWithDeny - ns/op 203.3 ns/op 294.7 ns/op 0.69
BenchmarkCachedRBACModelWithDeny - B/op 104 B/op 104 B/op 1
BenchmarkCachedRBACModelWithDeny - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedPriorityModel - ns/op 222 ns/op 301.1 ns/op 0.74
BenchmarkCachedPriorityModel - B/op 104 B/op 104 B/op 1
BenchmarkCachedPriorityModel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkCachedWithEnforceContext - ns/op 421.4 ns/op 532.4 ns/op 0.79
BenchmarkCachedWithEnforceContext - B/op 240 B/op 240 B/op 1
BenchmarkCachedWithEnforceContext - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkCachedRBACModelMediumParallel - ns/op 209.4 ns/op 280.2 ns/op 0.75
BenchmarkCachedRBACModelMediumParallel - B/op 105 B/op 105 B/op 1
BenchmarkCachedRBACModelMediumParallel - allocs/op 4 allocs/op 4 allocs/op 1
BenchmarkHasPolicySmall - ns/op 657.8 ns/op 882.7 ns/op 0.75
BenchmarkHasPolicySmall - B/op 150 B/op 150 B/op 1
BenchmarkHasPolicySmall - allocs/op 6 allocs/op 6 allocs/op 1
BenchmarkHasPolicyMedium - ns/op 685.1 ns/op 980.8 ns/op 0.70
BenchmarkHasPolicyMedium - B/op 157 B/op 157 B/op 1
BenchmarkHasPolicyMedium - allocs/op 6 allocs/op 6 allocs/op 1
BenchmarkHasPolicyLarge - ns/op 706.1 ns/op 1008 ns/op 0.70
BenchmarkHasPolicyLarge - B/op 165 B/op 165 B/op 1
BenchmarkHasPolicyLarge - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkAddPolicySmall - ns/op 693 ns/op 923.7 ns/op 0.75
BenchmarkAddPolicySmall - B/op 152 B/op 152 B/op 1
BenchmarkAddPolicySmall - allocs/op 6 allocs/op 6 allocs/op 1
BenchmarkAddPolicyMedium - ns/op 820.5 ns/op 1221 ns/op 0.67
BenchmarkAddPolicyMedium - B/op 178 B/op 187 B/op 0.95
BenchmarkAddPolicyMedium - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkAddPolicyLarge - ns/op 1473 ns/op 1941 ns/op 0.76
BenchmarkAddPolicyLarge - B/op 412 B/op 414 B/op 1.00
BenchmarkAddPolicyLarge - allocs/op 9 allocs/op 9 allocs/op 1
BenchmarkRemovePolicySmall - ns/op 671.1 ns/op 923.8 ns/op 0.73
BenchmarkRemovePolicySmall - B/op 166 B/op 166 B/op 1
BenchmarkRemovePolicySmall - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkRemovePolicyMedium - ns/op 780.5 ns/op 1091 ns/op 0.72
BenchmarkRemovePolicyMedium - B/op 178 B/op 179 B/op 0.99
BenchmarkRemovePolicyMedium - allocs/op 7 allocs/op 7 allocs/op 1
BenchmarkRemovePolicyLarge - ns/op 1657 ns/op 2318 ns/op 0.71
BenchmarkRemovePolicyLarge - B/op 295 B/op 306 B/op 0.96
BenchmarkRemovePolicyLarge - allocs/op 13 allocs/op 13 allocs/op 1
BenchmarkRaw - ns/op 20.9 ns/op 25.15 ns/op 0.83
BenchmarkRaw - B/op 0 B/op 0 B/op NaN
BenchmarkRaw - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkBasicModel - ns/op 4784 ns/op 5701 ns/op 0.84
BenchmarkBasicModel - B/op 1492 B/op 1490 B/op 1.00
BenchmarkBasicModel - allocs/op 17 allocs/op 17 allocs/op 1
BenchmarkRBACModel - ns/op 7283 ns/op 8636 ns/op 0.84
BenchmarkRBACModel - B/op 2038 B/op 2036 B/op 1.00
BenchmarkRBACModel - allocs/op 35 allocs/op 35 allocs/op 1
BenchmarkRBACModelSizes/small - ns/op 62519 ns/op 87099 ns/op 0.72
BenchmarkRBACModelSizes/small - B/op 19997 B/op 19966 B/op 1.00
BenchmarkRBACModelSizes/small - allocs/op 480 allocs/op 480 allocs/op 1
BenchmarkRBACModelSizes/medium - ns/op 628886 ns/op 1013746 ns/op 0.62
BenchmarkRBACModelSizes/medium - B/op 191308 B/op 191479 B/op 1.00
BenchmarkRBACModelSizes/medium - allocs/op 4829 allocs/op 4832 allocs/op 1.00
BenchmarkRBACModelSizes/large - ns/op 7409476 ns/op 10933852 ns/op 0.68
BenchmarkRBACModelSizes/large - B/op 1899522 B/op 1902627 B/op 1.00
BenchmarkRBACModelSizes/large - allocs/op 48175 allocs/op 48256 allocs/op 1.00
BenchmarkRBACModelSmall - ns/op 74834 ns/op 94659 ns/op 0.79
BenchmarkRBACModelSmall - B/op 20093 B/op 20081 B/op 1.00
BenchmarkRBACModelSmall - allocs/op 615 allocs/op 615 allocs/op 1
BenchmarkRBACModelMedium - ns/op 753357 ns/op 984965 ns/op 0.76
BenchmarkRBACModelMedium - B/op 194368 B/op 194316 B/op 1.00
BenchmarkRBACModelMedium - allocs/op 6022 allocs/op 6024 allocs/op 1.00
BenchmarkRBACModelLarge - ns/op 8379338 ns/op 11479809 ns/op 0.73
BenchmarkRBACModelLarge - B/op 1944404 B/op 1950682 B/op 1.00
BenchmarkRBACModelLarge - allocs/op 60776 allocs/op 61027 allocs/op 1.00
BenchmarkRBACModelWithResourceRoles - ns/op 5911 ns/op 7163 ns/op 0.83
BenchmarkRBACModelWithResourceRoles - B/op 1822 B/op 1822 B/op 1
BenchmarkRBACModelWithResourceRoles - allocs/op 27 allocs/op 27 allocs/op 1
BenchmarkRBACModelWithDomains - ns/op 6716 ns/op 8253 ns/op 0.81
BenchmarkRBACModelWithDomains - B/op 1808 B/op 1803 B/op 1.00
BenchmarkRBACModelWithDomains - allocs/op 25 allocs/op 25 allocs/op 1
BenchmarkABACModel - ns/op 3694 ns/op 4464 ns/op 0.83
BenchmarkABACModel - B/op 1516 B/op 1511 B/op 1.00
BenchmarkABACModel - allocs/op 17 allocs/op 17 allocs/op 1
BenchmarkABACRuleModel - ns/op 5044726 ns/op 5840107 ns/op 0.86
BenchmarkABACRuleModel - B/op 1305218 B/op 1304158 B/op 1.00
BenchmarkABACRuleModel - allocs/op 40088 allocs/op 40088 allocs/op 1
BenchmarkKeyMatchModel - ns/op 7902 ns/op 9898 ns/op 0.80
BenchmarkKeyMatchModel - B/op 3028 B/op 3020 B/op 1.00
BenchmarkKeyMatchModel - allocs/op 37 allocs/op 37 allocs/op 1
BenchmarkRBACModelWithDeny - ns/op 9117 ns/op 12032 ns/op 0.76
BenchmarkRBACModelWithDeny - B/op 2446 B/op 2443 B/op 1.00
BenchmarkRBACModelWithDeny - allocs/op 49 allocs/op 49 allocs/op 1
BenchmarkPriorityModel - ns/op 5597 ns/op 6947 ns/op 0.81
BenchmarkPriorityModel - B/op 1741 B/op 1738 B/op 1.00
BenchmarkPriorityModel - allocs/op 22 allocs/op 22 allocs/op 1
BenchmarkRBACModelWithDomainPatternLarge - ns/op 28171 ns/op 40749 ns/op 0.69
BenchmarkRBACModelWithDomainPatternLarge - B/op 16607 B/op 16597 B/op 1.00
BenchmarkRBACModelWithDomainPatternLarge - allocs/op 164 allocs/op 164 allocs/op 1
BenchmarkRoleManagerSmall - ns/op 97935 ns/op 133072 ns/op 0.74
BenchmarkRoleManagerSmall - B/op 11953 B/op 11952 B/op 1.00
BenchmarkRoleManagerSmall - allocs/op 797 allocs/op 797 allocs/op 1
BenchmarkRoleManagerMedium - ns/op 1025065 ns/op 1426750 ns/op 0.72
BenchmarkRoleManagerMedium - B/op 125909 B/op 125907 B/op 1.00
BenchmarkRoleManagerMedium - allocs/op 8741 allocs/op 8741 allocs/op 1
BenchmarkRoleManagerLarge - ns/op 14771294 ns/op 17899649 ns/op 0.83
BenchmarkRoleManagerLarge - B/op 1349922 B/op 1349922 B/op 1
BenchmarkRoleManagerLarge - allocs/op 89741 allocs/op 89741 allocs/op 1
BenchmarkBuildRoleLinksWithPatternLarge - ns/op 7388723866 ns/op 10816579694 ns/op 0.68
BenchmarkBuildRoleLinksWithPatternLarge - B/op 5292652424 B/op 5286243352 B/op 1.00
BenchmarkBuildRoleLinksWithPatternLarge - allocs/op 60937806 allocs/op 60935971 allocs/op 1.00
BenchmarkBuildRoleLinksWithDomainPatternLarge - ns/op 203625286 ns/op 293484917 ns/op 0.69
BenchmarkBuildRoleLinksWithDomainPatternLarge - B/op 140103579 B/op 139795270 B/op 1.00
BenchmarkBuildRoleLinksWithDomainPatternLarge - allocs/op 1676236 allocs/op 1676170 allocs/op 1.00
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge - ns/op 7737591512 ns/op 10659661076 ns/op 0.73
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge - B/op 5428503400 B/op 5423137320 B/op 1.00
BenchmarkBuildRoleLinksWithPatternAndDomainPatternLarge - allocs/op 62548080 allocs/op 62546421 allocs/op 1.00
BenchmarkHasLinkWithPatternLarge - ns/op 13966 ns/op 17012 ns/op 0.82
BenchmarkHasLinkWithPatternLarge - B/op 7538 B/op 7537 B/op 1.00
BenchmarkHasLinkWithPatternLarge - allocs/op 111 allocs/op 111 allocs/op 1
BenchmarkHasLinkWithDomainPatternLarge - ns/op 706.3 ns/op 915 ns/op 0.77
BenchmarkHasLinkWithDomainPatternLarge - B/op 80 B/op 80 B/op 1
BenchmarkHasLinkWithDomainPatternLarge - allocs/op 5 allocs/op 5 allocs/op 1
BenchmarkHasLinkWithPatternAndDomainPatternLarge - ns/op 13057 ns/op 16709 ns/op 0.78
BenchmarkHasLinkWithPatternAndDomainPatternLarge - B/op 7540 B/op 7541 B/op 1.00
BenchmarkHasLinkWithPatternAndDomainPatternLarge - allocs/op 111 allocs/op 111 allocs/op 1

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.