size limit
This commit is contained in:
@@ -18,6 +18,7 @@ module Templates
|
|||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
ANNOTATIONS_SIZE_LIMIT = 6.megabytes
|
ANNOTATIONS_SIZE_LIMIT = 6.megabytes
|
||||||
|
MAX_ZIP_SIZE = 100.megabytes
|
||||||
InvalidFileType = Class.new(StandardError)
|
InvalidFileType = Class.new(StandardError)
|
||||||
PdfEncrypted = Class.new(StandardError)
|
PdfEncrypted = Class.new(StandardError)
|
||||||
|
|
||||||
@@ -72,9 +73,15 @@ module Templates
|
|||||||
|
|
||||||
Array.wrap(files).each do |file|
|
Array.wrap(files).each do |file|
|
||||||
if file.content_type == ZIP_CONTENT_TYPE || file.content_type == X_ZIP_CONTENT_TYPE
|
if file.content_type == ZIP_CONTENT_TYPE || file.content_type == X_ZIP_CONTENT_TYPE
|
||||||
|
total_size = 0
|
||||||
|
|
||||||
Zip::File.open(file.tempfile).each do |entry|
|
Zip::File.open(file.tempfile).each do |entry|
|
||||||
next if entry.directory?
|
next if entry.directory?
|
||||||
|
|
||||||
|
total_size += entry.size
|
||||||
|
|
||||||
|
raise InvalidFileType, 'zip_too_large' if total_size > MAX_ZIP_SIZE
|
||||||
|
|
||||||
tempfile = Tempfile.new(entry.name)
|
tempfile = Tempfile.new(entry.name)
|
||||||
tempfile.binmode
|
tempfile.binmode
|
||||||
entry.get_input_stream { |in_stream| IO.copy_stream(in_stream, tempfile) }
|
entry.get_input_stream { |in_stream| IO.copy_stream(in_stream, tempfile) }
|
||||||
|
|||||||
Reference in New Issue
Block a user