summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2016-03-18 12:03:16 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2016-03-18 12:03:16 -0700
commit79cdc153784d9560bbfefe5c6f79cfa200a5fda5 (patch)
treec12f29f363cfaba42964e381a86809cbac352705
parentbc43fc2e2f50afcd961542e6503a9e71cee7e66f (diff)
downloadchef-lcg/remove-readline-libedit.tar.gz
coerce to strings.lcg/remove-readline-libedit
ffi now calls #encode on these and does not internally coerce to string correctly
-rw-r--r--lib/chef/win32/registry.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/chef/win32/registry.rb b/lib/chef/win32/registry.rb
index bccd2e3c72..e10a9027b9 100644
--- a/lib/chef/win32/registry.rb
+++ b/lib/chef/win32/registry.rb
@@ -61,7 +61,8 @@ class Chef
end
def set_value(key_path, value)
- Chef::Log.debug("Updating value #{value[:name]} in registry key #{key_path} with type #{value[:type]} and data #{value[:data]}")
+ data = value[:data].to_s if value[:data]
+ Chef::Log.debug("Updating value #{value[:name]} in registry key #{key_path} with type #{value[:type]} and data #{data}")
key_exists!(key_path)
hive, key = get_hive_and_key(key_path)
if value_exists?(key_path, value)
@@ -70,13 +71,13 @@ class Chef
return false
else
hive.open(key, ::Win32::Registry::KEY_SET_VALUE | ::Win32::Registry::KEY_QUERY_VALUE | registry_system_architecture) do |reg|
- reg.write(value[:name], get_type_from_name(value[:type]), value[:data])
+ reg.write(value[:name], get_type_from_name(value[:type]), data)
end
Chef::Log.debug("Value #{value[:name]} in registry key #{key_path} updated")
end
else
hive.open(key, ::Win32::Registry::KEY_SET_VALUE | ::Win32::Registry::KEY_QUERY_VALUE | registry_system_architecture) do |reg|
- reg.write(value[:name], get_type_from_name(value[:type]), value[:data])
+ reg.write(value[:name], get_type_from_name(value[:type]), data)
end
Chef::Log.debug("Value #{value[:name]} in registry key #{key_path} created")
end
@@ -206,13 +207,14 @@ class Chef
end
def data_exists?(key_path, value)
+ data = value[:data].to_s if value[:data]
key_exists!(key_path)
hive, key = get_hive_and_key(key_path)
hive.open(key, ::Win32::Registry::KEY_READ | registry_system_architecture) do |reg|
reg.each do |val_name, val_type, val_data|
if safely_downcase(val_name) == safely_downcase(value[:name]) &&
val_type == get_type_from_name(value[:type]) &&
- val_data == value[:data]
+ val_data == data
return true
end
end