diff options
author | ThibG <thib@sitedethib.com> | 2020-05-14 23:28:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-14 23:28:06 +0200 |
commit | 71fce71c94b1e94ae3a7af17bfc141709b61c428 (patch) | |
tree | 492cd66640ca1ac97289f073fb55a9301e2daefa /app | |
parent | c9dcc2d39fb5bd945ecd999e50c08a86cce1aa3e (diff) |
Fix webfinger returning wrong status code on malformed or missing param (#13759)
Fixes #13757
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/well_known/webfinger_controller.rb | 7 | ||||
-rw-r--r-- | app/lib/webfinger_resource.rb | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/app/controllers/well_known/webfinger_controller.rb b/app/controllers/well_known/webfinger_controller.rb index 480e58f3f..9de9db6ba 100644 --- a/app/controllers/well_known/webfinger_controller.rb +++ b/app/controllers/well_known/webfinger_controller.rb @@ -8,7 +8,8 @@ module WellKnown before_action :set_account before_action :check_account_suspension - rescue_from ActiveRecord::RecordNotFound, ActionController::ParameterMissing, with: :not_found + rescue_from ActiveRecord::RecordNotFound, with: :not_found + rescue_from ActionController::ParameterMissing, WebfingerResource::InvalidRequest, with: :bad_request def show expires_in 3.days, public: true @@ -37,6 +38,10 @@ module WellKnown expires_in(3.minutes, public: true) && gone if @account.suspended? end + def bad_request + head 400 + end + def not_found head 404 end diff --git a/app/lib/webfinger_resource.rb b/app/lib/webfinger_resource.rb index 22d78874a..420945485 100644 --- a/app/lib/webfinger_resource.rb +++ b/app/lib/webfinger_resource.rb @@ -3,6 +3,8 @@ class WebfingerResource attr_reader :resource + class InvalidRequest < StandardError; end + def initialize(resource) @resource = resource end @@ -14,7 +16,7 @@ class WebfingerResource when /\@/ username_from_acct else - raise(ActiveRecord::RecordNotFound) + raise InvalidRequest end end |