diff options
author | James Bence <jbence@mdsol.com> | 2014-09-27 13:15:15 -0700 |
---|---|---|
committer | James Bence <jbence@mdsol.com> | 2014-09-27 13:15:15 -0700 |
commit | eb9b7d065feb003192fcf9295e9a3fc4f8ffe8f3 (patch) | |
tree | dc6d0bf8604068ad570220d60c1c93848c8589e9 /lib/chef/provider | |
parent | e5c4ba3231b9cdcb74962b1eef0d56c6ccddd925 (diff) | |
parent | 5a88d0ef5b64280150f89332544e55144605eeb1 (diff) | |
download | chef-eb9b7d065feb003192fcf9295e9a3fc4f8ffe8f3.tar.gz |
Merge branch 'master'
Diffstat (limited to 'lib/chef/provider')
-rw-r--r-- | lib/chef/provider/deploy.rb | 3 | ||||
-rw-r--r-- | lib/chef/provider/deploy/revision.rb | 4 | ||||
-rw-r--r-- | lib/chef/provider/dsc_script.rb | 1 | ||||
-rw-r--r-- | lib/chef/provider/link.rb | 1 | ||||
-rw-r--r-- | lib/chef/provider/package/freebsd/pkg.rb | 3 | ||||
-rw-r--r-- | lib/chef/provider/package/portage.rb | 5 | ||||
-rw-r--r-- | lib/chef/provider/remote_directory.rb | 3 | ||||
-rw-r--r-- | lib/chef/provider/service/gentoo.rb | 3 | ||||
-rw-r--r-- | lib/chef/provider/service/insserv.rb | 3 | ||||
-rw-r--r-- | lib/chef/provider/service/macosx.rb | 3 | ||||
-rw-r--r-- | lib/chef/provider/user/dscl.rb | 5 |
11 files changed, 23 insertions, 11 deletions
diff --git a/lib/chef/provider/deploy.rb b/lib/chef/provider/deploy.rb index 426e69644e..db147278c2 100644 --- a/lib/chef/provider/deploy.rb +++ b/lib/chef/provider/deploy.rb @@ -22,6 +22,7 @@ require "chef/monkey_patches/fileutils" require "chef/provider/git" require "chef/provider/subversion" require "chef/dsl/recipe" +require "chef/util/path_helper" class Chef class Provider @@ -243,7 +244,7 @@ class Chef end def all_releases - Dir.glob(@new_resource.deploy_to + "/releases/*").sort + Dir.glob(Chef::Util::PathHelper.escape_glob(@new_resource.deploy_to) + "/releases/*").sort end def update_cached_repo diff --git a/lib/chef/provider/deploy/revision.rb b/lib/chef/provider/deploy/revision.rb index ed65742154..c98c1e5c75 100644 --- a/lib/chef/provider/deploy/revision.rb +++ b/lib/chef/provider/deploy/revision.rb @@ -42,7 +42,7 @@ class Chef known_releases = sorted_releases - Dir["#{new_resource.deploy_to}/releases/*"].each do |release_dir| + Dir["#{Chef::Util::PathHelper.escape_glob(new_resource.deploy_to)}/releases/*"].each do |release_dir| unless known_releases.include?(release_dir) converge_by("Remove unknown release in #{release_dir}") do FileUtils.rm_rf(release_dir) @@ -85,7 +85,7 @@ class Chef end def sorted_releases_from_filesystem - Dir.glob(new_resource.deploy_to + "/releases/*").sort_by { |d| ::File.ctime(d) } + Dir.glob(Chef::Util::PathHelper.escape_glob(new_resource.deploy_to) + "/releases/*").sort_by { |d| ::File.ctime(d) } end def load_cache diff --git a/lib/chef/provider/dsc_script.rb b/lib/chef/provider/dsc_script.rb index 5d7322842c..c979800cba 100644 --- a/lib/chef/provider/dsc_script.rb +++ b/lib/chef/provider/dsc_script.rb @@ -19,6 +19,7 @@ require 'chef/util/powershell/cmdlet' require 'chef/util/dsc/configuration_generator' require 'chef/util/dsc/local_configuration_manager' +require 'chef/util/path_helper' class Chef class Provider diff --git a/lib/chef/provider/link.rb b/lib/chef/provider/link.rb index af2fe4a84f..639dc4f3ff 100644 --- a/lib/chef/provider/link.rb +++ b/lib/chef/provider/link.rb @@ -22,6 +22,7 @@ require 'chef/mixin/file_class' require 'chef/resource/link' require 'chef/provider' require 'chef/scan_access_control' +require 'chef/util/path_helper' class Chef class Provider diff --git a/lib/chef/provider/package/freebsd/pkg.rb b/lib/chef/provider/package/freebsd/pkg.rb index c757d26fe5..ebbfbb19b4 100644 --- a/lib/chef/provider/package/freebsd/pkg.rb +++ b/lib/chef/provider/package/freebsd/pkg.rb @@ -20,6 +20,7 @@ # require 'chef/provider/package/freebsd/base' +require 'chef/util/path_helper' class Chef class Provider @@ -87,7 +88,7 @@ class Chef end def file_candidate_version_path - Dir["#{@new_resource.source}/#{@current_resource.package_name}*"][-1].to_s + Dir[Chef::Util::PathHelper.escape_glob("#{@new_resource.source}/#{@current_resource.package_name}") + "*"][-1].to_s end def file_candidate_version diff --git a/lib/chef/provider/package/portage.rb b/lib/chef/provider/package/portage.rb index 7e0eebd0d9..816e262ab0 100644 --- a/lib/chef/provider/package/portage.rb +++ b/lib/chef/provider/package/portage.rb @@ -19,6 +19,7 @@ require 'chef/provider/package' require 'chef/mixin/command' require 'chef/resource/package' +require 'chef/util/path_helper' class Chef class Provider @@ -34,7 +35,9 @@ class Chef category, pkg = %r{^#{PACKAGE_NAME_PATTERN}$}.match(@new_resource.package_name)[1,2] - possibilities = Dir["/var/db/pkg/#{category || "*"}/#{pkg}-*"].map {|d| d.sub(%r{/var/db/pkg/}, "") } + globsafe_category = category ? Chef::Util::PathHelper.escape_glob(category) : nil + globsafe_pkg = Chef::Util::PathHelper.escape_glob(pkg) + possibilities = Dir["/var/db/pkg/#{globsafe_category || "*"}/#{globsafe_pkg}-*"].map {|d| d.sub(%r{/var/db/pkg/}, "") } versions = possibilities.map do |entry| if(entry =~ %r{[^/]+/#{Regexp.escape(pkg)}\-(\d[\.\d]*((_(alpha|beta|pre|rc|p)\d*)*)?(-r\d+)?)}) [$&, $1] diff --git a/lib/chef/provider/remote_directory.rb b/lib/chef/provider/remote_directory.rb index 77e2754b08..553eb14ae5 100644 --- a/lib/chef/provider/remote_directory.rb +++ b/lib/chef/provider/remote_directory.rb @@ -26,6 +26,7 @@ require 'uri' require 'tempfile' require 'net/https' require 'set' +require 'chef/util/path_helper' class Chef class Provider @@ -35,7 +36,7 @@ class Chef def action_create super - files_to_purge = Set.new(Dir.glob(::File.join(@new_resource.path, '**', '*'), + files_to_purge = Set.new(Dir.glob(::File.join(Chef::Util::PathHelper.escape_glob(@new_resource.path), '**', '*'), ::File::FNM_DOTMATCH).select do |name| name !~ /(?:^|#{Regexp.escape(::File::SEPARATOR)})\.\.?$/ end) diff --git a/lib/chef/provider/service/gentoo.rb b/lib/chef/provider/service/gentoo.rb index a68abfebc9..e2dff10994 100644 --- a/lib/chef/provider/service/gentoo.rb +++ b/lib/chef/provider/service/gentoo.rb @@ -19,6 +19,7 @@ require 'chef/provider/service/init' require 'chef/mixin/command' +require 'chef/util/path_helper' class Chef::Provider::Service::Gentoo < Chef::Provider::Service::Init def load_current_resource @@ -29,7 +30,7 @@ class Chef::Provider::Service::Gentoo < Chef::Provider::Service::Init super @current_resource.enabled( - Dir.glob("/etc/runlevels/**/#{@current_resource.service_name}").any? do |file| + Dir.glob("/etc/runlevels/**/#{Chef::Util::PathHelper.escape_glob(@current_resource.service_name)}").any? do |file| @found_script = true exists = ::File.exists? file readable = ::File.readable? file diff --git a/lib/chef/provider/service/insserv.rb b/lib/chef/provider/service/insserv.rb index f4c85dd9d3..1ee817707a 100644 --- a/lib/chef/provider/service/insserv.rb +++ b/lib/chef/provider/service/insserv.rb @@ -17,6 +17,7 @@ # require 'chef/provider/service/init' +require 'chef/util/path_helper' class Chef class Provider @@ -27,7 +28,7 @@ class Chef super # Look for a /etc/rc.*/SnnSERVICE link to signifiy that the service would be started in a runlevel - if Dir.glob("/etc/rc**/S*#{@current_resource.service_name}").empty? + if Dir.glob("/etc/rc**/S*#{Chef::Util::PathHelper.escape_glob(@current_resource.service_name)}").empty? @current_resource.enabled false else @current_resource.enabled true diff --git a/lib/chef/provider/service/macosx.rb b/lib/chef/provider/service/macosx.rb index cf5e554559..ad1535327b 100644 --- a/lib/chef/provider/service/macosx.rb +++ b/lib/chef/provider/service/macosx.rb @@ -19,6 +19,7 @@ require 'rexml/document' require 'chef/resource/service' require 'chef/provider/service/simple' +require 'chef/util/path_helper' class Chef class Provider @@ -194,7 +195,7 @@ class Chef plists = PLIST_DIRS.inject([]) do |results, dir| edir = ::File.expand_path(dir) entries = Dir.glob( - "#{edir}/*#{@current_resource.service_name}*.plist" + "#{edir}/*#{Chef::Util::PathHelper.escape_glob(@current_resource.service_name)}*.plist" ) entries.any? ? results << entries : results end diff --git a/lib/chef/provider/user/dscl.rb b/lib/chef/provider/user/dscl.rb index a24a047596..84f5145c52 100644 --- a/lib/chef/provider/user/dscl.rb +++ b/lib/chef/provider/user/dscl.rb @@ -20,6 +20,7 @@ require 'mixlib/shellout' require 'chef/provider/user' require 'openssl' require 'plist' +require 'chef/util/path_helper' class Chef class Provider @@ -308,7 +309,7 @@ user password using shadow hash.") src = @current_resource.home FileUtils.mkdir_p(@new_resource.home) - files = ::Dir.glob("#{src}/*", ::File::FNM_DOTMATCH) - ["#{src}/.","#{src}/.."] + files = ::Dir.glob("#{Chef::Util::PathHelper.escape_glob(src)}/*", ::File::FNM_DOTMATCH) - ["#{src}/.","#{src}/.."] ::FileUtils.mv(files,@new_resource.home, :force => true) ::FileUtils.rmdir(src) ::FileUtils.chown_R(@new_resource.username,@new_resource.gid.to_s,@new_resource.home) @@ -555,7 +556,7 @@ user password using shadow hash.") user_info = nil # We flush the cache here in order to make sure that we read fresh information - # for the user. + # for the user. shell_out("dscacheutil '-flushcache'") begin |