FIX: Crazy large ids should not raise exceptions
This commit is contained in:
parent
bba0393c87
commit
4180e207c3
|
@ -100,6 +100,15 @@ class ApplicationController < ActionController::Base
|
|||
|
||||
class PluginDisabled < StandardError; end
|
||||
|
||||
# Handles requests for giant IDs that throw pg exceptions
|
||||
rescue_from RangeError do |e|
|
||||
if e.message =~ /ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer/
|
||||
rescue_discourse_actions(:not_found, 404)
|
||||
else
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
rescue_from Discourse::NotFound, PluginDisabled do
|
||||
rescue_discourse_actions(:not_found, 404)
|
||||
end
|
||||
|
|
|
@ -578,6 +578,11 @@ describe TopicsController do
|
|||
expect(response.status).to eq(404)
|
||||
end
|
||||
|
||||
it 'returns a 404 for an ID that is larger than postgres limits' do
|
||||
xhr :get, :show, topic_id: 50142173232201640412, slug: 'topic-that-is-made-up'
|
||||
expect(response.status).to eq(404)
|
||||
end
|
||||
|
||||
context 'a topic with nil slug exists' do
|
||||
before do
|
||||
@nil_slug_topic = Fabricate(:topic)
|
||||
|
|
Loading…
Reference in New Issue