lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
Path with 16 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
Path with 16 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
Path with 16 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
Path with 16 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
Path with 16 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
Path with 16 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/gzip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/gzip.rb
end # Change this later.
::File.open(entry_path, "wb") do |os|
buf = "".dup
while (buf = entry.read(chunk_size))
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
Path with 16 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
Path with 16 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
Path with 16 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
Path with 16 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
Path with 16 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
Path with 16 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/strategy.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/strategy.rb
end
::File.open(entry_path, "wb") do |os|
while (buf = entry.read(chunk_size))
remaining_size -= buf.size
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
Path with 16 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
Path with 16 steps
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/gzip.rb
def get_compressed_file_stream(compressed_file_path)
gzip = Zlib::GzipReader.open(compressed_file_path)
yield(gzip)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
Path with 16 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
Path with 16 steps
-
lib/compression/tar.rb
def get_compressed_file_stream(compressed_file_path)
file_stream = IO.new(IO.sysopen(compressed_file_path))
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
-
lib/compression/tar.rb
tar_extract = Gem::Package::TarReader.new(file_stream)
tar_extract.rewind
yield(tar_extract)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
This file extraction depends on a potentially untrusted source.
Path with 14 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
Path with 16 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/zip.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/zip.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)
Path with 16 steps
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/zip.rb
def get_compressed_file_stream(compressed_file_path)
zip_file = ::Zip::File.open(compressed_file_path)
yield(zip_file)
end
-
lib/compression/strategy.rb
sanitized_dest_path = sanitize_path(dest_path)
get_compressed_file_stream(sanitized_compressed_file_path) do |compressed_file|
available_size = calculate_available_size(max_size)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
end
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
def entries_of(compressed_file)
compressed_file
end
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
available_size = calculate_available_size(max_size)
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/tar.rb
end
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/tar.rb
def build_entry_path(dest_path, entry, _)
File.join(dest_path, entry.full_name)
end
-
lib/compression/strategy.rb
entries_of(compressed_file).each do |entry|
entry_path = build_entry_path(sanitized_dest_path, entry, sanitized_compressed_file_path)
next if !is_safe_path_for_extraction?(entry_path, sanitized_dest_path)
-
lib/compression/strategy.rb
FileUtils.mkdir_p(File.dirname(entry_path))
if is_file?(entry)
remaining_size = extract_file(entry, entry_path, available_size)
available_size = remaining_size
else
-
lib/compression/zip.rb
end
def extract_file(entry, entry_path, available_size)
remaining_size = available_size
-
lib/compression/zip.rb
end
::File.open(entry_path, "wb") do |os|
entry.get_input_stream do |is|
entry.set_extra_attributes_on_path(entry_path)