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.
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