mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
catch dir too long
This commit is contained in:
parent
f4fcf94b1a
commit
3ccb4ace37
3 changed files with 17 additions and 7 deletions
|
@ -843,6 +843,10 @@ class Site < Sequel::Model
|
|||
path = scrubbed_path path
|
||||
relative_path = files_path path
|
||||
|
||||
if SiteFile.path_too_long?(relative_path)
|
||||
return 'Directory path is too long.'
|
||||
end
|
||||
|
||||
if Dir.exist?(relative_path) || File.exist?(relative_path)
|
||||
return 'Directory (or file) already exists.'
|
||||
end
|
||||
|
|
|
@ -520,13 +520,6 @@ describe 'site_files' do
|
|||
_(@site.reload.changed_count).must_equal 2
|
||||
end
|
||||
|
||||
describe 'directory create' do
|
||||
it 'scrubs ../ from directory' do
|
||||
@site.create_directory '../../test'
|
||||
_(@site.site_files.select {|site_file| site_file.path =~ /\.\./}.length).must_equal 0
|
||||
end
|
||||
end
|
||||
|
||||
describe 'classification' do
|
||||
before do
|
||||
puts "TODO FINISH CLASSIFIER"
|
||||
|
|
|
@ -51,6 +51,19 @@ describe Site do
|
|||
_(site.site_files_dataset.count).must_equal site_file_count+1
|
||||
end
|
||||
end
|
||||
|
||||
it 'scrubs ../ from directory' do
|
||||
site = Fabricate :site
|
||||
site.create_directory '../../test'
|
||||
_(site.site_files.select {|site_file| site_file.path =~ /\.\./}.length).must_equal 0
|
||||
end
|
||||
|
||||
it 'blocks long directory create' do
|
||||
site = Fabricate :site
|
||||
long_path_string = 'a' * (SiteFile::FILE_PATH_CHARACTER_LIMIT + 1)
|
||||
res = site.create_directory long_path_string
|
||||
_(res).must_equal 'Directory path is too long.'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'custom_max_space' do
|
||||
|
|
Loading…
Add table
Reference in a new issue