From c8c06176861d9181024790fe04618e600d24b3a5 Mon Sep 17 00:00:00 2001 From: Tom Caspy Date: Wed, 25 Feb 2015 16:41:11 +0200 Subject: [PATCH] fixes #9551 - checking the encryption format so osx doesn't fail --- app/models/concerns/host_common.rb | 15 ++++++++++++--- app/services/password_crypt.rb | 4 ++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/host_common.rb b/app/models/concerns/host_common.rb index d1d3c30af4e7..b51a7a2a5a44 100644 --- a/app/models/concerns/host_common.rb +++ b/app/models/concerns/host_common.rb @@ -114,9 +114,18 @@ def crypt_root_pass end if unencrypted_pass.present? - self.root_pass = !!(unencrypted_pass.match('^\$\d+\$.+\$.+')) ? unencrypted_pass : - (operatingsystem.nil? ? PasswordCrypt.passw_crypt(unencrypted_pass) : PasswordCrypt.passw_crypt(unencrypted_pass, operatingsystem.password_hash)) - self.grub_pass = !!(unencrypted_pass.match('^\$\d+\$.+\$.+')) ? unencrypted_pass : PasswordCrypt.grub2_passw_crypt(unencrypted_pass) + is_actually_encrypted = if PasswordCrypt.nix? + unencrypted_pass.match('^\$\d+\$.+\$.+') + else + unencrypted_pass.starts_with?("$") + end + + if is_actually_encrypted + self.root_pass = self.grub_pass = unencrypted_pass + else + self.root_pass = operatingsystem.nil? ? PasswordCrypt.passw_crypt(unencrypted_pass) : PasswordCrypt.passw_crypt(unencrypted_pass, operatingsystem.password_hash) + self.grub_pass = PasswordCrypt.grub2_passw_crypt(unencrypted_pass) + end end end diff --git a/app/services/password_crypt.rb b/app/services/password_crypt.rb index c855ac44925f..8906b26b2c9d 100644 --- a/app/services/password_crypt.rb +++ b/app/services/password_crypt.rb @@ -9,4 +9,8 @@ def self.passw_crypt(passwd, hash_alg = 'MD5') def self.grub2_passw_crypt(passw) self.passw_crypt(passw, 'MD5') end + + def self.nix? + @nix ||= passw_crypt("test_this").match('^\$\d+\$.+\$.+') + end end