pull/601/head
Pete Matsyburka 1 month ago
parent 1b41af798d
commit 1d2394e31e

@ -18,6 +18,7 @@ module Templates
].freeze
ANNOTATIONS_SIZE_LIMIT = 6.megabytes
MAX_ZIP_SIZE = 100.megabytes
InvalidFileType = Class.new(StandardError)
PdfEncrypted = Class.new(StandardError)
@ -72,9 +73,15 @@ module Templates
Array.wrap(files).each do |file|
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|
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.binmode
entry.get_input_stream { |in_stream| IO.copy_stream(in_stream, tempfile) }

Loading…
Cancel
Save