In Files

Namespace

Class/Module Index [+]

Quicksearch

Rex::FileUtils::UnitTest::Klass

This class provides helper methods for dealing with files that are not supplied by the standard ruby API.

Public Class Methods

clean_path(old) click to toggle source

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
find_full_path(file_name) click to toggle source

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.