diff options
author | Eli Young <elyscape@gmail.com> | 2015-05-05 15:16:35 -0700 |
---|---|---|
committer | Eli Young <elyscape@gmail.com> | 2015-05-05 15:53:34 -0700 |
commit | 7d7e905b543448f5d37d13c9e1a03d1e0be307fe (patch) | |
tree | 433fdf817e8fb29dcaf42a90666aa5a499bbd15a | |
parent | 7181e4ebcaf59cb16e7166aa254cbb637590423a (diff) | |
download | puppet-stdlib-7d7e905b543448f5d37d13c9e1a03d1e0be307fe.tar.gz puppet-stdlib-7d7e905b543448f5d37d13c9e1a03d1e0be307fe.tar.bz2 |
pw_hash: Fix functionality on JRuby < 1.7.17
The previous change to this function broke it on JRuby before 1.7.17 by
attempting to use a variable that wasn't defined (`salt`). To fix this,
define `salt` ahead of time and use that instead of building the salt
later.
cf. https://github.com/puppetlabs/puppetlabs-stdlib/pull/443#discussion_r29718588
-rw-r--r-- | lib/puppet/parser/functions/pw_hash.rb | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/puppet/parser/functions/pw_hash.rb b/lib/puppet/parser/functions/pw_hash.rb index 4682a63..41d4223 100644 --- a/lib/puppet/parser/functions/pw_hash.rb +++ b/lib/puppet/parser/functions/pw_hash.rb @@ -38,6 +38,8 @@ Puppet::Parser::Functions::newfunction( password = args[0] return nil if password.nil? or password.empty? + salt = "$#{hash_type}$#{args[2]}" + # handle weak implementations of String#crypt if 'test'.crypt('$1$1') != '$1$1$Bp8CU9Oujr9SSEw53WV6G.' # JRuby < 1.7.17 @@ -49,6 +51,6 @@ Puppet::Parser::Functions::newfunction( raise Puppet::ParseError, 'system does not support enhanced salts' end else - password.crypt("$#{hash_type}$#{args[2]}") + password.crypt(salt) end end |