This class provides helper methods for dealing with files that are not supplied by the standard ruby API.
This methods cleans the supplied path of directory traversal sequences It must accept path/with/..a/folder../starting/or/ending/in/two/dots but clean ../something as well as path/with/..traversal
# File lib/rex/file.rb, line 20 def self.clean_path(old) path = old while(path.index(/\/..\/|\/..\\|\\..\\|\\..\/|\A..\\|\A..\//) != nil) path.gsub!(/\A..\\|\A..\//,'') #eliminate starting ..\ or ../ path.gsub!(/\/..\/|\/..\\/,'/') #clean linux style path.gsub!(/\\..\\|\\..\//,'\') #clean windows style end path end
This method searches the PATH environment variable for a fully qualified path to the supplied file name.
# File lib/rex/file.rb, line 34 def self.find_full_path(file_name) # Check for the absolute fast first if (file_name[0,1] == "/" and ::File.exists?(file_name) and ::File::Stat.new(file_name)) return file_name end path = Rex::Compat.getenv('PATH') if (path) path.split(::File::PATH_SEPARATOR).each { |base| begin # Deal with Windows paths surrounded by quotes. Prevents # silliness like trying to look for # '"C:\\framework\\nmap"\\nmap.exe' which will always fail. base = $1 if base =~ /^"(.*)"$/ path = base + ::File::SEPARATOR + file_name if (::File::Stat.new(path) and not ::File.directory?(path)) return path end rescue end } end return nil end
Generated with the Darkfish Rdoc Generator 2.