Prevent undefined method `split' for nil:NilClass with pe_foo_version facts

Without this patch the pe_major_version, pe_minor_version, and
pe_patch_version facts directly depend on the pe_version fact in a
manner that calls split directly on the return value.

This is a problem because Fact values are not always guaranteed to
return strings, or objects that respond to split.  This patch is a
defensive measure to ensure we're always calling the split method on a
string object.

If the Fact returns nil, this will be converted to an empty string
responding to split.
This commit is contained in:
Jeff McCune 2012-10-25 10:00:42 -07:00
parent ba70a3885a
commit e68677976b

View file

@ -28,20 +28,26 @@ end
Facter.add("pe_major_version") do
confine :is_pe => true
setcode do
Facter.value(:pe_version).split('.')[0]
if pe_version = Facter.value(:pe_version)
pe_version.to_s.split('.')[0]
end
end
end
Facter.add("pe_minor_version") do
confine :is_pe => true
setcode do
Facter.value(:pe_version).split('.')[1]
if pe_version = Facter.value(:pe_version)
pe_version.to_s.split('.')[1]
end
end
end
Facter.add("pe_patch_version") do
confine :is_pe => true
setcode do
Facter.value(:pe_version).split('.')[2]
if pe_version = Facter.value(:pe_version)
pe_version.to_s.split('.')[2]
end
end
end