From 147377ab650ee5885171c7337c1d92195a39003a Mon Sep 17 00:00:00 2001
From: SuhorukovAnton <anton.sukhorukov@onlyoffice.com>
Date: Wed, 9 Feb 2022 13:32:01 +0300
Subject: [PATCH] bugfix: crash when string == null

---
 common/ASC.Core.Common/Context/Impl/CoreConfiguration.cs     | 5 +++--
 common/ASC.Core.Common/Context/Impl/UserManager.cs           | 4 ++--
 .../ASC.Core.Common/Security/EmailValidationKeyProvider.cs   | 2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/common/ASC.Core.Common/Context/Impl/CoreConfiguration.cs b/common/ASC.Core.Common/Context/Impl/CoreConfiguration.cs
index d3f4eb1e7fd..ba0b124145c 100644
--- a/common/ASC.Core.Common/Context/Impl/CoreConfiguration.cs
+++ b/common/ASC.Core.Common/Context/Impl/CoreConfiguration.cs
@@ -76,13 +76,14 @@ public bool Personal
             get
             {
                 //TODO:if (CustomMode && HttpContext.Current != null && HttpContext.Current.Request.SailfishApp()) return true;
-                return personal ?? (bool)(personal = Configuration["core:personal"].Equals("true", StringComparison.OrdinalIgnoreCase));
+                return personal ?? (bool)(personal = string.Equals(Configuration["core:personal"], "true", StringComparison.OrdinalIgnoreCase));
             }
         }
 
         public bool CustomMode
         {
-            get { return customMode ?? (bool)(customMode = Configuration["core:custom-mode"].Equals("true", StringComparison.OrdinalIgnoreCase)); }
+            get { return customMode ?? (bool)(customMode = string.Equals(Configuration["core:custom-mode"], "true", StringComparison.OrdinalIgnoreCase));}
+
         }
     }
 
diff --git a/common/ASC.Core.Common/Context/Impl/UserManager.cs b/common/ASC.Core.Common/Context/Impl/UserManager.cs
index bec401d4936..e30e6b035dd 100644
--- a/common/ASC.Core.Common/Context/Impl/UserManager.cs
+++ b/common/ASC.Core.Common/Context/Impl/UserManager.cs
@@ -175,13 +175,13 @@ public UserInfo GetUserByUserName(string username)
         public UserInfo GetUserBySid(string sid)
         {
             return GetUsersInternal()
-                .FirstOrDefault(u => u.Sid != null && u.Sid.Equals(sid, StringComparison.CurrentCultureIgnoreCase)) ?? Constants.LostUser;
+                .FirstOrDefault(u => u.Sid != null && string.Equals(u.Sid , sid, StringComparison.CurrentCultureIgnoreCase)) ?? Constants.LostUser;
         }
 
         public UserInfo GetSsoUserByNameId(string nameId)
         {
             return GetUsersInternal()
-                .FirstOrDefault(u => !string.IsNullOrEmpty(u.SsoNameId) && u.SsoNameId.Equals(nameId, StringComparison.CurrentCultureIgnoreCase)) ?? Constants.LostUser;
+                .FirstOrDefault(u => !string.IsNullOrEmpty(u.SsoNameId) && string.Equals(u.SsoNameId, nameId, StringComparison.CurrentCultureIgnoreCase)) ?? Constants.LostUser;
         }
         public bool IsUserNameExists(string username)
         {
diff --git a/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs b/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs
index 820fbe17e5f..57cf988b485 100644
--- a/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs
+++ b/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs
@@ -134,7 +134,7 @@ private ValidationResult ValidateEmailKeyInternal(string email, string key, Time
 
             var hash = GetMashineHashedData(BitConverter.GetBytes(ms), Encoding.ASCII.GetBytes(email));
             var key2 = DoStringFromBytes(hash);
-            var key2_good = parts[1].Equals(key2, StringComparison.OrdinalIgnoreCase);
+            var key2_good = string.Equals(parts[1], key2, StringComparison.OrdinalIgnoreCase);
             if (!key2_good) return ValidationResult.Invalid;
             var ms_current = (long)(DateTime.UtcNow - _from).TotalMilliseconds;
             return validInterval >= TimeSpan.FromMilliseconds(ms_current - ms) ? ValidationResult.Ok : ValidationResult.Expired;