diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index 139c5eeac41..12d2d5dbb06 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -49,6 +49,10 @@ class ListController < ApplicationController :filter, ].flatten + rescue_from ActionController::Redirecting::UnsafeRedirectError do + raise Discourse::NotFound + end + # Create our filters Discourse.filters.each do |filter| define_method(filter) do |options = nil| diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index 050ce2e0ed4..620d5489076 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -1124,6 +1124,20 @@ RSpec.describe ListController do ) end end + + context "when redirect raises an unsafe redirect error" do + before do + ListController + .any_instance + .stubs(:redirect_to) + .raises(ActionController::Redirecting::UnsafeRedirectError) + end + + it "renders a 404" do + get "/c/hello/world/bye/#{subsubcategory.id}" + expect(response).to have_http_status :not_found + end + end end describe "shared drafts" do