diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2012-10-25 10:00:42 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2012-10-25 10:00:45 -0700 |
commit | e68677976b671eb8b7f81393dc6dac6c6d86410c (patch) | |
tree | a8530a855d272b4f63b506356294cc15943d181c /lib/facter | |
parent | ba70a3885af452aea72d408f447c5bc7fd8bf0c0 (diff) |
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.
Diffstat (limited to 'lib/facter')
-rw-r--r-- | lib/facter/pe_version.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/facter/pe_version.rb b/lib/facter/pe_version.rb index 7c31e84..0cc0f64 100644 --- a/lib/facter/pe_version.rb +++ b/lib/facter/pe_version.rb @@ -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 |