Skip to content

Commit

Permalink
(MODULES-905) Narrow the confinement in bool2str
Browse files Browse the repository at this point in the history
Previously, bool2str() accepted a broad array of boolean values and
bare strings, without any attempt to validate that the strings in any
way resembled "true" or "false" (or any of the other values bool2num()
accepts). This commit narrows the input confinement to TrueClass and
FalseClass, which means that bool2str() will only interpolate
strict boolean values now.
  • Loading branch information
mckern committed May 15, 2014
1 parent 0761fcf commit 93c4151
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions lib/puppet/parser/functions/bool2str.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
module Puppet::Parser::Functions
newfunction(:bool2str, :type => :rvalue, :doc => <<-EOS
Converts a boolean to a string.
Requires a single boolean or string as an input.
Requires a single boolean as an input.
EOS
) do |arguments|

Expand All @@ -15,15 +15,12 @@ module Puppet::Parser::Functions
value = arguments[0]
klass = value.class

# We can have either true or false, or string which resembles boolean ...
unless [FalseClass, TrueClass, String].include?(klass)
raise(Puppet::ParseError, 'bool2str(): Requires either ' +
'boolean or string to work with')
# We can have either true or false, and nothing else
unless [FalseClass, TrueClass].include?(klass)
raise(Puppet::ParseError, 'bool2str(): Requires a boolean to work with')
end

result = value.is_a?(String) ? value : value.to_s

return result
return value.to_s
end
end

Expand Down

0 comments on commit 93c4151

Please sign in to comment.