From 9bae8356fded9d1c7aaea96cba246709bfe1a516 Mon Sep 17 00:00:00 2001
From: David Schmitt <david.schmitt@puppetlabs.com>
Date: Wed, 22 Apr 2015 16:04:00 -0700
Subject: pw_hash: avoid ruby magic when running on java

---
 lib/puppet/parser/functions/pw_hash.rb | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

(limited to 'lib/puppet/parser')

diff --git a/lib/puppet/parser/functions/pw_hash.rb b/lib/puppet/parser/functions/pw_hash.rb
index ad3e393..4682a63 100644
--- a/lib/puppet/parser/functions/pw_hash.rb
+++ b/lib/puppet/parser/functions/pw_hash.rb
@@ -42,15 +42,13 @@ Puppet::Parser::Functions::newfunction(
     if 'test'.crypt('$1$1') != '$1$1$Bp8CU9Oujr9SSEw53WV6G.'
       # JRuby < 1.7.17
       if RUBY_PLATFORM == 'java'
-        # override String#crypt for password variable
-        def password.crypt(salt)
-          # puppetserver bundles Apache Commons Codec
-          org.apache.commons.codec.digest.Crypt.crypt(self.to_java_bytes, salt)
-        end
+        # puppetserver bundles Apache Commons Codec
+        org.apache.commons.codec.digest.Crypt.crypt(password.to_java_bytes, salt)
       else
         # MS Windows and other systems that don't support enhanced salts
         raise Puppet::ParseError, 'system does not support enhanced salts'
       end
+    else
+      password.crypt("$#{hash_type}$#{args[2]}")
     end
-    password.crypt("$#{hash_type}$#{args[2]}")
 end
-- 
cgit v1.2.3