diff options
author | Stan Hu <stanhu@gmail.com> | 2019-08-25 07:20:17 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-08-26 13:37:42 -0700 |
commit | 6fa5f510e83a91e19a1601bf6c01a9cffe6fd5c9 (patch) | |
tree | 8317880ef28f90f0d0688dcc7f925826eca541cd /app/policies | |
parent | fc08d48cf0a596dc151cb7bc7ab0f7d2721f3333 (diff) | |
download | gitlab-ce-6fa5f510e83a91e19a1601bf6c01a9cffe6fd5c9.tar.gz |
Guard against deleted project feature entry
In https://gitlab.com/gitlab-org/gitlab-ce/issues/66482, we see that a
project's `project_feature` association may be lazily loaded and hence
return `nil` if the entry is deleted if the `Project` is already loaded
in memory. To ensure we don't fail hard when this happens, assume all
features are disabled.
We can fix this issue by eager loading the `project_feature` in
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/32169, but we
shouldn't have to depend on that.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/66482
Diffstat (limited to 'app/policies')
-rw-r--r-- | app/policies/project_policy.rb | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb index b8dee1b0789..e2634692dc7 100644 --- a/app/policies/project_policy.rb +++ b/app/policies/project_policy.rb @@ -502,6 +502,8 @@ class ProjectPolicy < BasePolicy end def feature_available?(feature) + return false unless project.project_feature + case project.project_feature.access_level(feature) when ProjectFeature::DISABLED false |