From 9495009c9e56eb6339c2f07f7eba45cf578f1ae1 Mon Sep 17 00:00:00 2001 From: Ilya Date: Fri, 24 May 2019 20:15:19 +0500 Subject: [PATCH 1/3] Code cleanup: use IndexOf(char) overload --- .../commands/management/Computer.cs | 2 +- .../commands/management/ControlPanelItemCommand.cs | 6 +++--- .../commands/management/ParsePathCommand.cs | 4 ++-- .../security/CertificateProvider.cs | 4 ++-- .../engine/CommandCompletion/CompletionCompleters.cs | 2 +- .../engine/LanguagePrimitives.cs | 2 +- .../engine/Modules/ModuleCmdletBase.cs | 2 +- .../engine/ParameterSetInfo.cs | 2 +- src/System.Management.Automation/engine/parser/ast.cs | 4 ++-- .../engine/remoting/commands/CustomShellCommands.cs | 2 +- .../engine/remoting/common/RunspaceConnectionInfo.cs | 6 +++--- .../help/SaveHelpCommand.cs | 2 +- .../namespaces/FileSystemProvider.cs | 6 +++--- .../namespaces/LocationGlobber.cs | 8 ++++---- .../namespaces/RegistryProvider.cs | 10 +++++----- .../namespaces/TransactedRegistryKey.cs | 4 ++-- 16 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Management/commands/management/Computer.cs b/src/Microsoft.PowerShell.Commands.Management/commands/management/Computer.cs index c7a2d9e7514..a097de748eb 100644 --- a/src/Microsoft.PowerShell.Commands.Management/commands/management/Computer.cs +++ b/src/Microsoft.PowerShell.Commands.Management/commands/management/Computer.cs @@ -1808,7 +1808,7 @@ internal static string GetLocalAdminUserName(string computerName, PSCredential p } else { - int dotIndex = computerName.IndexOf(".", StringComparison.OrdinalIgnoreCase); + int dotIndex = computerName.IndexOf('.'); if (dotIndex == -1) { localUserName = computerName + "\\" + psLocalCredential.UserName; diff --git a/src/Microsoft.PowerShell.Commands.Management/commands/management/ControlPanelItemCommand.cs b/src/Microsoft.PowerShell.Commands.Management/commands/management/ControlPanelItemCommand.cs index aa07697cd9a..c2798b03f51 100644 --- a/src/Microsoft.PowerShell.Commands.Management/commands/management/ControlPanelItemCommand.cs +++ b/src/Microsoft.PowerShell.Commands.Management/commands/management/ControlPanelItemCommand.cs @@ -227,7 +227,7 @@ private static bool CompareVerbActionOpen(string verbActionName) { string canonicalName = (string)item.ExtendedProperty("System.ApplicationName"); canonicalName = !string.IsNullOrEmpty(canonicalName) - ? canonicalName.Substring(0, canonicalName.IndexOf("\0", StringComparison.OrdinalIgnoreCase)) + ? canonicalName.Substring(0, canonicalName.IndexOf('\0')) : null; if (canonicalName != null && canonicalName.Equals(RegionCanonicalName, StringComparison.OrdinalIgnoreCase)) @@ -452,7 +452,7 @@ internal List GetControlPanelItemByCanonicalName(List= 0); + filePath.Contains(':')); } /// diff --git a/src/System.Management.Automation/engine/ParameterSetInfo.cs b/src/System.Management.Automation/engine/ParameterSetInfo.cs index 7f0d69e8814..240a242fcd1 100644 --- a/src/System.Management.Automation/engine/ParameterSetInfo.cs +++ b/src/System.Management.Automation/engine/ParameterSetInfo.cs @@ -292,7 +292,7 @@ internal static string GetParameterTypeString(Type type, IEnumerable } // If the type is really an array, but the typename didn't include [], then add it. - if (type.IsArray && (parameterTypeString.IndexOf("[]", StringComparison.OrdinalIgnoreCase) == -1)) + if (type.IsArray && (parameterTypeString.IndexOf("[]", StringComparison.Ordinal) == -1)) { var t = type; while (t.IsArray) diff --git a/src/System.Management.Automation/engine/parser/ast.cs b/src/System.Management.Automation/engine/parser/ast.cs index 0ba4a21cd78..434b5a6b5e6 100644 --- a/src/System.Management.Automation/engine/parser/ast.cs +++ b/src/System.Management.Automation/engine/parser/ast.cs @@ -8349,7 +8349,7 @@ internal Type GetGenericType(Type generic) { if (generic == null || !generic.ContainsGenericParameters) { - if (TypeName.FullName.IndexOf("`", StringComparison.OrdinalIgnoreCase) == -1) + if (!TypeName.FullName.Contains('`')) { var newTypeName = new TypeName(Extent, string.Format(CultureInfo.InvariantCulture, "{0}`{1}", TypeName.FullName, GenericArguments.Count)); @@ -8376,7 +8376,7 @@ public Type GetReflectionAttributeType() Type generic = TypeName.GetReflectionAttributeType(); if (generic == null || !generic.ContainsGenericParameters) { - if (TypeName.FullName.IndexOf("`", StringComparison.OrdinalIgnoreCase) == -1) + if (!TypeName.FullName.Contains('`')) { var newTypeName = new TypeName(Extent, string.Format(CultureInfo.InvariantCulture, "{0}Attribute`{1}", TypeName.FullName, GenericArguments.Count)); diff --git a/src/System.Management.Automation/engine/remoting/commands/CustomShellCommands.cs b/src/System.Management.Automation/engine/remoting/commands/CustomShellCommands.cs index 709de06e468..76d1ef2a90f 100644 --- a/src/System.Management.Automation/engine/remoting/commands/CustomShellCommands.cs +++ b/src/System.Management.Automation/engine/remoting/commands/CustomShellCommands.cs @@ -5436,7 +5436,7 @@ protected override void BeginProcessing() if (!string.IsNullOrEmpty(this.Username)) { - if (this.Username.IndexOf("\\", StringComparison.OrdinalIgnoreCase) >= 0) + if (this.Username.Contains('\\')) { validator = null; diff --git a/src/System.Management.Automation/engine/remoting/common/RunspaceConnectionInfo.cs b/src/System.Management.Automation/engine/remoting/common/RunspaceConnectionInfo.cs index 6be6c527a49..3f19d2487ff 100644 --- a/src/System.Management.Automation/engine/remoting/common/RunspaceConnectionInfo.cs +++ b/src/System.Management.Automation/engine/remoting/common/RunspaceConnectionInfo.cs @@ -1285,8 +1285,8 @@ private void UpdateUri(Uri uri) (RemotingErrorIdStrings.RelativeUriForRunspacePathNotSupported)); } - if (uri.OriginalString.LastIndexOf(":", StringComparison.OrdinalIgnoreCase) > - uri.AbsoluteUri.IndexOf("//", StringComparison.OrdinalIgnoreCase)) + if (uri.OriginalString.LastIndexOf(':') > + uri.AbsoluteUri.IndexOf("//", StringComparison.Ordinal)) { UseDefaultWSManPort = false; } @@ -1296,7 +1296,7 @@ private void UpdateUri(Uri uri) // http://localhost , http://127.0.0.1 etc. string appname; - if (uri.AbsolutePath.Equals("/", StringComparison.OrdinalIgnoreCase) && + if (uri.AbsolutePath.Equals("/", StringComparison.Ordinal) && string.IsNullOrEmpty(uri.Query) && string.IsNullOrEmpty(uri.Fragment)) { appname = s_defaultAppName; diff --git a/src/System.Management.Automation/help/SaveHelpCommand.cs b/src/System.Management.Automation/help/SaveHelpCommand.cs index 59801e24c0a..048f93ecda0 100644 --- a/src/System.Management.Automation/help/SaveHelpCommand.cs +++ b/src/System.Management.Automation/help/SaveHelpCommand.cs @@ -192,7 +192,7 @@ internal override bool ProcessModuleWithCulture(UpdatableHelpModuleInfo module, { // Deal with wildcards - int index = path.IndexOf("*", StringComparison.OrdinalIgnoreCase); + int index = path.IndexOf('*'); if (index == 0) { diff --git a/src/System.Management.Automation/namespaces/FileSystemProvider.cs b/src/System.Management.Automation/namespaces/FileSystemProvider.cs index 7cf78ade9ad..853fb167b37 100644 --- a/src/System.Management.Automation/namespaces/FileSystemProvider.cs +++ b/src/System.Management.Automation/namespaces/FileSystemProvider.cs @@ -5340,13 +5340,13 @@ private string RemoveRelativeTokens(string path) { string testPath = path.Replace('/', '\\'); if ( - (testPath.IndexOf("\\", StringComparison.OrdinalIgnoreCase) < 0) || + !testPath.Contains('\\') || testPath.StartsWith(".\\", StringComparison.OrdinalIgnoreCase) || testPath.StartsWith("..\\", StringComparison.OrdinalIgnoreCase) || testPath.EndsWith("\\.", StringComparison.OrdinalIgnoreCase) || testPath.EndsWith("\\..", StringComparison.OrdinalIgnoreCase) || - (testPath.IndexOf("\\.\\", StringComparison.OrdinalIgnoreCase) > 0) || - (testPath.IndexOf("\\..\\", StringComparison.OrdinalIgnoreCase) > 0)) + testPath.Contains("\\.\\", StringComparison.OrdinalIgnoreCase) || + testPath.Contains("\\..\\", StringComparison.OrdinalIgnoreCase)) { try { diff --git a/src/System.Management.Automation/namespaces/LocationGlobber.cs b/src/System.Management.Automation/namespaces/LocationGlobber.cs index 82870358a65..b189556f789 100644 --- a/src/System.Management.Automation/namespaces/LocationGlobber.cs +++ b/src/System.Management.Automation/namespaces/LocationGlobber.cs @@ -1506,7 +1506,7 @@ internal static bool IsAbsolutePath(string path) break; } - int index = path.IndexOf(":", StringComparison.Ordinal); + int index = path.IndexOf(':'); if (index == -1) { @@ -1604,7 +1604,7 @@ internal bool IsAbsolutePath(string path, out string driveName) break; } - int index = path.IndexOf(":", StringComparison.Ordinal); + int index = path.IndexOf(':'); if (index == -1) { @@ -1863,7 +1863,7 @@ internal string GetDriveRootRelativePathFromPSPath( string normalizedRoot = _sessionState.Drive.Current.Root.Replace( StringLiterals.AlternatePathSeparator, StringLiterals.DefaultPathSeparator); - if (normalizedRoot.IndexOf(":", StringComparison.Ordinal) >= 0) + if (normalizedRoot.Contains(':')) { string normalizedPath = path.Replace(StringLiterals.AlternatePathSeparator, StringLiterals.DefaultPathSeparator); if (normalizedPath.StartsWith(normalizedRoot, StringComparison.OrdinalIgnoreCase)) @@ -3160,7 +3160,7 @@ private static string RemoveDriveQualifier(string path) // Find the drive separator only if it's before a path separator - int index = path.IndexOf(":", StringComparison.Ordinal); + int index = path.IndexOf(':'); if (index != -1) { int separator = path.IndexOf(StringLiterals.DefaultPathSeparator, 0, index); diff --git a/src/System.Management.Automation/namespaces/RegistryProvider.cs b/src/System.Management.Automation/namespaces/RegistryProvider.cs index 0de52140d06..d94d71a2f6d 100644 --- a/src/System.Management.Automation/namespaces/RegistryProvider.cs +++ b/src/System.Management.Automation/namespaces/RegistryProvider.cs @@ -2958,7 +2958,7 @@ private string NormalizePath(string path) private bool HasRelativePathTokens(string path) { return ( - (path.IndexOf("\\", StringComparison.OrdinalIgnoreCase) == 0) || + path.StartsWith('\\') || path.Contains("\\.\\") || path.Contains("\\..\\") || path.EndsWith("\\..", StringComparison.OrdinalIgnoreCase) || @@ -3332,12 +3332,12 @@ private bool CreateIntermediateKeys(string path) path = NormalizePath(path); - int index = path.IndexOf("\\", StringComparison.Ordinal); + int index = path.IndexOf('\\'); if (index == 0) { // The user may precede a path with \ path = path.Substring(1); - index = path.IndexOf("\\", StringComparison.Ordinal); + index = path.IndexOf('\\'); } if (index == -1) @@ -3522,14 +3522,14 @@ private IRegistryWrapper GetRegkeyForPath(string path, bool writeAccess) do // false loop { - int index = path.IndexOf("\\", StringComparison.Ordinal); + int index = path.IndexOf('\\'); if (index == 0) { // The user may proceed a path with \ path = path.Substring(1); - index = path.IndexOf("\\", StringComparison.Ordinal); + index = path.IndexOf('\\'); } if (index == -1) diff --git a/src/System.Management.Automation/namespaces/TransactedRegistryKey.cs b/src/System.Management.Automation/namespaces/TransactedRegistryKey.cs index 236fa070558..c43d709691b 100644 --- a/src/System.Management.Automation/namespaces/TransactedRegistryKey.cs +++ b/src/System.Management.Automation/namespaces/TransactedRegistryKey.cs @@ -2037,7 +2037,7 @@ private static void ValidateKeyName(string name) throw new ArgumentNullException(RegistryProviderStrings.Arg_Name); } - int nextSlash = name.IndexOf("\\", StringComparison.OrdinalIgnoreCase); + int nextSlash = name.IndexOf('\\'); int current = 0; while (nextSlash != -1) { @@ -2045,7 +2045,7 @@ private static void ValidateKeyName(string name) throw new ArgumentException(RegistryProviderStrings.Arg_RegKeyStrLenBug); current = nextSlash + 1; - nextSlash = name.IndexOf("\\", current, StringComparison.OrdinalIgnoreCase); + nextSlash = name.IndexOf('\\', current); } if ((name.Length - current) > MaxKeyLength) From 4f7d8ded4d6b10de67f51ca51f162bec05e77210 Mon Sep 17 00:00:00 2001 From: Ilya Date: Fri, 24 May 2019 20:20:36 +0500 Subject: [PATCH 2/3] Add fix in FileSystemProvider --- .../namespaces/FileSystemProvider.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/System.Management.Automation/namespaces/FileSystemProvider.cs b/src/System.Management.Automation/namespaces/FileSystemProvider.cs index 853fb167b37..91decbe9268 100644 --- a/src/System.Management.Automation/namespaces/FileSystemProvider.cs +++ b/src/System.Management.Automation/namespaces/FileSystemProvider.cs @@ -5341,12 +5341,12 @@ private string RemoveRelativeTokens(string path) string testPath = path.Replace('/', '\\'); if ( !testPath.Contains('\\') || - testPath.StartsWith(".\\", StringComparison.OrdinalIgnoreCase) || - testPath.StartsWith("..\\", StringComparison.OrdinalIgnoreCase) || - testPath.EndsWith("\\.", StringComparison.OrdinalIgnoreCase) || - testPath.EndsWith("\\..", StringComparison.OrdinalIgnoreCase) || - testPath.Contains("\\.\\", StringComparison.OrdinalIgnoreCase) || - testPath.Contains("\\..\\", StringComparison.OrdinalIgnoreCase)) + testPath.StartsWith(".\\", StringComparison.Ordinal) || + testPath.StartsWith("..\\", StringComparison.Ordinal) || + testPath.EndsWith("\\.", StringComparison.Ordinal) || + testPath.EndsWith("\\..", StringComparison.Ordinal) || + testPath.Contains("\\.\\", StringComparison.Ordinal) || + testPath.Contains("\\..\\", StringComparison.Ordinal)) { try { From 73ea752158d8f391bfdc34018853374e97ae3857 Mon Sep 17 00:00:00 2001 From: Ilya Date: Sun, 23 Jun 2019 23:23:06 +0500 Subject: [PATCH 3/3] Revert CertificateProvider --- .../security/CertificateProvider.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs b/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs index 014eb6db922..6165f8b862a 100644 --- a/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs +++ b/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs @@ -3204,8 +3204,8 @@ public DnsNameProperty(X509Certificate2 cert) // extract DNS name from subject distinguish name // if it exists and does not contain a comma // a comma, indicates it is not a DNS name - if (cert.Subject.StartsWith(distinguishedNamePrefix, System.StringComparison.OrdinalIgnoreCase) && - !cert.Subject.Contains(',')) + if (cert.Subject.StartsWith(distinguishedNamePrefix, System.StringComparison.InvariantCultureIgnoreCase) && + cert.Subject.IndexOf(",", System.StringComparison.InvariantCulture) == -1) { name = cert.Subject.Substring(distinguishedNamePrefix.Length); try