summaryrefslogtreecommitdiff
path: root/lib/chef/provider
diff options
context:
space:
mode:
authorJames Bence <jbence@mdsol.com>2014-09-27 13:15:15 -0700
committerJames Bence <jbence@mdsol.com>2014-09-27 13:15:15 -0700
commiteb9b7d065feb003192fcf9295e9a3fc4f8ffe8f3 (patch)
treedc6d0bf8604068ad570220d60c1c93848c8589e9 /lib/chef/provider
parente5c4ba3231b9cdcb74962b1eef0d56c6ccddd925 (diff)
parent5a88d0ef5b64280150f89332544e55144605eeb1 (diff)
downloadchef-eb9b7d065feb003192fcf9295e9a3fc4f8ffe8f3.tar.gz
Merge branch 'master'
Diffstat (limited to 'lib/chef/provider')
-rw-r--r--lib/chef/provider/deploy.rb3
-rw-r--r--lib/chef/provider/deploy/revision.rb4
-rw-r--r--lib/chef/provider/dsc_script.rb1
-rw-r--r--lib/chef/provider/link.rb1
-rw-r--r--lib/chef/provider/package/freebsd/pkg.rb3
-rw-r--r--lib/chef/provider/package/portage.rb5
-rw-r--r--lib/chef/provider/remote_directory.rb3
-rw-r--r--lib/chef/provider/service/gentoo.rb3
-rw-r--r--lib/chef/provider/service/insserv.rb3
-rw-r--r--lib/chef/provider/service/macosx.rb3
-rw-r--r--lib/chef/provider/user/dscl.rb5
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