summaryrefslogtreecommitdiff
path: root/lib/facter
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2012-10-25 10:00:42 -0700
committerJeff McCune <jeff@puppetlabs.com>2012-10-25 10:00:45 -0700
commite68677976b671eb8b7f81393dc6dac6c6d86410c (patch)
treea8530a855d272b4f63b506356294cc15943d181c /lib/facter
parentba70a3885af452aea72d408f447c5bc7fd8bf0c0 (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.rb12
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