From e68677976b671eb8b7f81393dc6dac6c6d86410c Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 25 Oct 2012 10:00:42 -0700 Subject: 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. --- lib/facter/pe_version.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib') 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 -- cgit v1.2.3