mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 10:20:58 -06:00
Add extra protection in Upload#get_from_url
.
In case the extension goes missing from the URL.
This commit is contained in:
parent
b3469bea2d
commit
3884e99e88
@ -177,7 +177,7 @@ class Upload < ActiveRecord::Base
|
||||
end
|
||||
|
||||
return if uri&.path.blank?
|
||||
data = uri.path.match(/(\/original\/\dX[\/\.\w]*\/([a-zA-Z0-9]+)[\.\w]+)/)
|
||||
data = uri.path.match(/(\/original\/\dX[\/\.\w]*\/([a-zA-Z0-9]+)[\.\w]*)/)
|
||||
return if data.blank?
|
||||
sha1 = data[2]
|
||||
upload = nil
|
||||
|
@ -82,9 +82,16 @@ describe Upload do
|
||||
expect(Upload.get_from_url(upload.url)).to eq(upload)
|
||||
end
|
||||
|
||||
describe 'for an extensionless url' do
|
||||
let(:url) { "/uploads/default/original/1X/#{sha1}" }
|
||||
|
||||
it 'should return the right upload' do
|
||||
expect(Upload.get_from_url(upload.url)).to eq(upload)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'for a url without a tree' do
|
||||
let(:url) { "/uploads/default/original/1X/#{sha1}.png" }
|
||||
let(:upload) { Fabricate(:upload, url: url, sha1: sha1) }
|
||||
|
||||
it 'should return the right upload' do
|
||||
expect(Upload.get_from_url(upload.url)).to eq(upload)
|
||||
|
Loading…
Reference in New Issue
Block a user