Skip to content

Commit d090c9b

Browse files
committed
switch from Invariant culture to Ordinal culture for Registry States and Environment Variables
1 parent 973c7fe commit d090c9b

6 files changed

Lines changed: 50 additions & 44 deletions

File tree

FlashpointSecurePlayer/CustomSecurityManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ int InternetInterfaces.IInternetSecurityManager.ProcessUrlAction([MarshalAs(Unma
153153
string extension = Path.GetExtension(flashpointURI.LocalPath);
154154

155155
if (extension != null) {
156-
if (extension.Equals(FLASH_EXTENSION, StringComparison.InvariantCultureIgnoreCase)) {
156+
if (extension.Equals(FLASH_EXTENSION, StringComparison.OrdinalIgnoreCase)) {
157157
if (dwAction == URLACTION_ACTIVEX_TREATASUNTRUSTED) {
158158
pPolicy = URLPOLICY_ALLOW;
159159
return S_OK;

FlashpointSecurePlayer/EnvironmentVariables.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ private string GetValue(EnvironmentVariablesElement environmentVariablesElement)
4343
string comparableName = GetComparableName(environmentVariablesElement.Name);
4444

4545
if (comparableName != null) {
46-
if (comparableName.Equals(__COMPAT_LAYER, StringComparison.InvariantCultureIgnoreCase)) {
46+
if (comparableName.Equals(__COMPAT_LAYER, StringComparison.OrdinalIgnoreCase)) {
4747
throw new InvalidEnvironmentVariablesException("Find and replace with the \"" + __COMPAT_LAYER + "\" Environment Variable is not supported.");
4848
}
4949
}
@@ -138,7 +138,7 @@ private string GetValue(EnvironmentVariablesElement environmentVariablesElement)
138138
comparableName = GetComparableName(environmentVariablesElement.Name);
139139

140140
if (comparableName != null) {
141-
if (UnmodifiableComparableNames.Contains(comparableName, StringComparer.InvariantCultureIgnoreCase)) {
141+
if (UnmodifiableComparableNames.Contains(comparableName, StringComparer.OrdinalIgnoreCase)) {
142142
throw new InvalidEnvironmentVariablesException("The \"" + environmentVariablesElement.Name + "\" Environment Variable cannot be modified while creating the Active Environment Variables Element.");
143143
}
144144
}
@@ -172,7 +172,7 @@ private string GetValue(EnvironmentVariablesElement environmentVariablesElement)
172172
comparableName = GetComparableName(environmentVariablesElement.Name);
173173

174174
if (comparableName != null) {
175-
if (UnmodifiableComparableNames.Contains(comparableName, StringComparer.InvariantCultureIgnoreCase)) {
175+
if (UnmodifiableComparableNames.Contains(comparableName, StringComparer.OrdinalIgnoreCase)) {
176176
throw new InvalidEnvironmentVariablesException("The \"" + environmentVariablesElement.Name + "\" Environment Variable cannot be modified at this time.");
177177
}
178178
}
@@ -189,7 +189,7 @@ private string GetValue(EnvironmentVariablesElement environmentVariablesElement)
189189

190190
// now throw up a restart in Web Browser Mode for Compatibility Settings
191191
if (comparableName != null) {
192-
if (comparableName.Equals(__COMPAT_LAYER, StringComparison.InvariantCultureIgnoreCase)
192+
if (comparableName.Equals(__COMPAT_LAYER, StringComparison.OrdinalIgnoreCase)
193193
&& modeElement.Name == ModeElement.NAME.WEB_BROWSER) {
194194
values = new List<string>();
195195

@@ -206,7 +206,7 @@ private string GetValue(EnvironmentVariablesElement environmentVariablesElement)
206206
// we have to restart in this case in server mode
207207
// because the compatibility layers only take effect
208208
// on process start
209-
if (values.Except(compatibilityLayerValues, StringComparer.InvariantCultureIgnoreCase).Any()) {
209+
if (values.Except(compatibilityLayerValues, StringComparer.OrdinalIgnoreCase).Any()) {
210210
throw new CompatibilityLayersException("The Compatibility Layers (" + value + ") require a restart to be set.");
211211
}
212212
}
@@ -308,7 +308,7 @@ public void Deactivate(MODIFICATIONS_REVERT_METHOD modificationsRevertMethod = M
308308
comparableName = GetComparableName(activeEnvironmentVariablesElement.Name);
309309

310310
if (comparableName != null) {
311-
if (UnmodifiableComparableNames.Contains(comparableName, StringComparer.InvariantCultureIgnoreCase)) {
311+
if (UnmodifiableComparableNames.Contains(comparableName, StringComparer.OrdinalIgnoreCase)) {
312312
throw new InvalidEnvironmentVariablesException("The \"" + activeEnvironmentVariablesElement.Name + "\" Environment Variable cannot be modified at this time.");
313313
}
314314
}
@@ -331,8 +331,8 @@ public void Deactivate(MODIFICATIONS_REVERT_METHOD modificationsRevertMethod = M
331331
} else {
332332
// don't reset Compatibility Settings if we're restarting for Web Browser Mode
333333
if (comparableName != null) {
334-
if (comparableName.Equals(__COMPAT_LAYER, StringComparison.InvariantCultureIgnoreCase)
335-
|| values.Except(compatibilityLayerValues, StringComparer.InvariantCultureIgnoreCase).Any()
334+
if (comparableName.Equals(__COMPAT_LAYER, StringComparison.OrdinalIgnoreCase)
335+
|| values.Except(compatibilityLayerValues, StringComparer.OrdinalIgnoreCase).Any()
336336
|| modeElement.Name != ModeElement.NAME.WEB_BROWSER) {
337337
try {
338338
Environment.SetEnvironmentVariable(activeEnvironmentVariablesElement.Name, activeEnvironmentVariablesElement.Value, EnvironmentVariableTarget.Process);

FlashpointSecurePlayer/FlashpointSecurePlayerGUI.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ private void ShowNoGameSelected() {
121121
}
122122

123123
if (parentProcessFileName == null
124-
|| !parentProcessFileName.Equals(FLASHPOINT_LAUNCHER_PARENT_PROCESS_FILE_NAME, StringComparison.InvariantCultureIgnoreCase)) {
124+
|| !parentProcessFileName.Equals(FLASHPOINT_LAUNCHER_PARENT_PROCESS_FILE_NAME, StringComparison.OrdinalIgnoreCase)) {
125125
text += " " + Properties.Resources.UseFlashpointLauncher;
126126
Process[] processesByName;
127127

@@ -247,7 +247,7 @@ private void AskLaunchWithOldCPUSimulator() {
247247
}
248248

249249
if (parentProcessFileName != null) {
250-
if (parentProcessFileName.Equals(OLD_CPU_SIMULATOR_PARENT_PROCESS_FILE_NAME, StringComparison.InvariantCultureIgnoreCase)) {
250+
if (parentProcessFileName.Equals(OLD_CPU_SIMULATOR_PARENT_PROCESS_FILE_NAME, StringComparison.OrdinalIgnoreCase)) {
251251
return;
252252
}
253253
}
@@ -1325,7 +1325,7 @@ await ImportActiveX(delegate (string text) {
13251325
try {
13261326
// ignore host if going through localhost (no proxy)
13271327
if (requestUri != null) {
1328-
if (!requestUri.Host.Equals("localhost", StringComparison.InvariantCultureIgnoreCase)) {
1328+
if (!requestUri.Host.Equals("localhost", StringComparison.OrdinalIgnoreCase)) {
13291329
htdocsFilePath.Append("\\");
13301330
htdocsFilePath.Append(requestUri.Host);
13311331
}

FlashpointSecurePlayer/OldCPUSimulator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public bool TestRunningWithOldCPUSimulator() {
4141
}
4242

4343
if (parentProcessFileName != null) {
44-
if (parentProcessFileName.Equals(OLD_CPU_SIMULATOR_PARENT_PROCESS_FILE_NAME, StringComparison.InvariantCultureIgnoreCase)) {
44+
if (parentProcessFileName.Equals(OLD_CPU_SIMULATOR_PARENT_PROCESS_FILE_NAME, StringComparison.OrdinalIgnoreCase)) {
4545
return true;
4646
}
4747
}

FlashpointSecurePlayer/RegistryStates.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,10 @@ private string GetUserKeyValueName(string keyValueName, string activeCurrentUser
215215

216216
string keyValueNameCurrentUser = "HKEY_USERS\\" + (String.IsNullOrEmpty(activeCurrentUser) ? WindowsIdentity.GetCurrent().User.Value : activeCurrentUser) + "\\";
217217

218-
if (keyValueName.StartsWith(HKEY_CURRENT_USER, StringComparison.InvariantCultureIgnoreCase)) {
218+
if (keyValueName.StartsWith(HKEY_CURRENT_USER, StringComparison.OrdinalIgnoreCase)) {
219219
// make this explicit in case this is a shared computer
220220
keyValueName = keyValueNameCurrentUser + keyValueName.Substring(HKEY_CURRENT_USER.Length);
221-
} else if (keyValueName.StartsWith(HKEY_LOCAL_MACHINE, StringComparison.InvariantCultureIgnoreCase)) {
221+
} else if (keyValueName.StartsWith(HKEY_LOCAL_MACHINE, StringComparison.OrdinalIgnoreCase)) {
222222
if (!activeAdministrator || !TestLaunchedAsAdministratorUser()) {
223223
// if activeAdministrator is false, we use HKEY_USERS anyway
224224
// because the registry state was created as a non-admin
@@ -241,24 +241,24 @@ private string GetKeyValueNameFromKernelRegistryString(string kernelRegistryStri
241241
string keyValueName = String.Empty;
242242
kernelRegistryString = AddTrailingSlash(kernelRegistryString);
243243

244-
if (kernelRegistryString.StartsWith(REGISTRY_MACHINE, StringComparison.InvariantCultureIgnoreCase)) {
244+
if (kernelRegistryString.StartsWith(REGISTRY_MACHINE, StringComparison.OrdinalIgnoreCase)) {
245245
keyValueName = "HKEY_LOCAL_MACHINE\\" + kernelRegistryString.Substring(REGISTRY_MACHINE.Length);
246246
} else {
247247
const string REGISTRY_USER = "\\REGISTRY\\USER\\";
248248

249-
if (kernelRegistryString.StartsWith(REGISTRY_USER, StringComparison.InvariantCultureIgnoreCase)) {
249+
if (kernelRegistryString.StartsWith(REGISTRY_USER, StringComparison.OrdinalIgnoreCase)) {
250250
const string HKEY_USERS = "HKEY_USERS\\";
251251

252252
keyValueName = HKEY_USERS + kernelRegistryString.Substring(REGISTRY_USER.Length);
253253
string currentUser = WindowsIdentity.GetCurrent().User.Value;
254254
string keyValueNameCurrentUser = HKEY_USERS + currentUser + "_CLASSES\\";
255255

256-
if (keyValueName.StartsWith(keyValueNameCurrentUser, StringComparison.InvariantCultureIgnoreCase)) {
256+
if (keyValueName.StartsWith(keyValueNameCurrentUser, StringComparison.OrdinalIgnoreCase)) {
257257
keyValueName = "HKEY_CURRENT_USER\\SOFTWARE\\CLASSES\\" + keyValueName.Substring(keyValueNameCurrentUser.Length);
258258
} else {
259259
keyValueNameCurrentUser = HKEY_USERS + currentUser + "\\";
260260

261-
if (keyValueName.StartsWith(keyValueNameCurrentUser, StringComparison.InvariantCultureIgnoreCase)) {
261+
if (keyValueName.StartsWith(keyValueNameCurrentUser, StringComparison.OrdinalIgnoreCase)) {
262262
keyValueName = "HKEY_CURRENT_USER\\" + keyValueName.Substring(keyValueNameCurrentUser.Length);
263263
}
264264
}
@@ -278,19 +278,19 @@ private RegistryKey OpenBaseKeyInRegistryView(string keyName, RegistryView regis
278278

279279
RegistryHive? registryHive = null;
280280

281-
if (keyName.StartsWith("HKEY_CURRENT_USER\\", StringComparison.InvariantCultureIgnoreCase)) {
281+
if (keyName.StartsWith("HKEY_CURRENT_USER\\", StringComparison.OrdinalIgnoreCase)) {
282282
registryHive = RegistryHive.CurrentUser;
283-
} else if (keyName.StartsWith("HKEY_LOCAL_MACHINE\\", StringComparison.InvariantCultureIgnoreCase)) {
283+
} else if (keyName.StartsWith("HKEY_LOCAL_MACHINE\\", StringComparison.OrdinalIgnoreCase)) {
284284
registryHive = RegistryHive.LocalMachine;
285-
} else if (keyName.StartsWith("HKEY_CLASSES_ROOT\\", StringComparison.InvariantCultureIgnoreCase)) {
285+
} else if (keyName.StartsWith("HKEY_CLASSES_ROOT\\", StringComparison.OrdinalIgnoreCase)) {
286286
registryHive = RegistryHive.ClassesRoot;
287-
} else if (keyName.StartsWith("HKEY_USERS\\", StringComparison.InvariantCultureIgnoreCase)) {
287+
} else if (keyName.StartsWith("HKEY_USERS\\", StringComparison.OrdinalIgnoreCase)) {
288288
registryHive = RegistryHive.Users;
289-
} else if (keyName.StartsWith("HKEY_PERFORMANCE_DATA\\", StringComparison.InvariantCultureIgnoreCase)) {
289+
} else if (keyName.StartsWith("HKEY_PERFORMANCE_DATA\\", StringComparison.OrdinalIgnoreCase)) {
290290
registryHive = RegistryHive.PerformanceData;
291-
} else if (keyName.StartsWith("HKEY_CURRENT_CONFIG\\", StringComparison.InvariantCultureIgnoreCase)) {
291+
} else if (keyName.StartsWith("HKEY_CURRENT_CONFIG\\", StringComparison.OrdinalIgnoreCase)) {
292292
registryHive = RegistryHive.CurrentConfig;
293-
} else if (keyName.StartsWith("HKEY_DYN_DATA\\", StringComparison.InvariantCultureIgnoreCase)) {
293+
} else if (keyName.StartsWith("HKEY_DYN_DATA\\", StringComparison.OrdinalIgnoreCase)) {
294294
registryHive = RegistryHive.DynData;
295295
}
296296

@@ -601,7 +601,7 @@ private string GetRedirectedKeyValueName(string keyValueName, BINARY_TYPE binary
601601
bool removeWOW64Subkey = false;
602602

603603
for (int i = 0;i < wow64KeyList.Count;i++) {
604-
if (wow64KeyName.StartsWith(wow64KeyList[i].Name + "\\", StringComparison.InvariantCultureIgnoreCase)) {
604+
if (wow64KeyName.StartsWith(wow64KeyList[i].Name + "\\", StringComparison.OrdinalIgnoreCase)) {
605605
effect = wow64KeyList[i].Effect;
606606
effectExceptionValueNames = wow64KeyList[i].EffectExceptionValueNames;
607607

@@ -1323,7 +1323,7 @@ private void GotValue(RegistryTraceData registryTraceData) {
13231323
&& (registryTraceData.ProcessID == Process.GetCurrentProcess().Id
13241324
|| registryTraceData.ProcessID == -1)) {
13251325
if (ImportPaused) {
1326-
if (registryTraceData.ValueName.Equals(IMPORT_RESUME, StringComparison.InvariantCultureIgnoreCase)) {
1326+
if (registryTraceData.ValueName.Equals(IMPORT_RESUME, StringComparison.OrdinalIgnoreCase)) {
13271327
ImportPaused = false;
13281328
// hold here until after the control has installed
13291329
// that way we can recieve registry messages as they come in
@@ -1332,7 +1332,7 @@ private void GotValue(RegistryTraceData registryTraceData) {
13321332
resumeEventWaitHandle.WaitOne();
13331333
}
13341334
} else {
1335-
if (registryTraceData.ValueName.Equals(IMPORT_PAUSE, StringComparison.InvariantCultureIgnoreCase)) {
1335+
if (registryTraceData.ValueName.Equals(IMPORT_PAUSE, StringComparison.OrdinalIgnoreCase)) {
13361336
ImportPaused = true;
13371337
}
13381338
}

FlashpointSecurePlayer/Shared.cs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2159,7 +2159,7 @@ private static Configuration GetEXEConfiguration(bool create, string name) {
21592159

21602160
// caching...
21612161
if (!String.IsNullOrEmpty(name)) {
2162-
if (name.Equals(EXEConfigurationName, StringComparison.InvariantCultureIgnoreCase)) {
2162+
if (name.Equals(EXEConfigurationName, StringComparison.OrdinalIgnoreCase)) {
21632163
return EXEConfiguration;
21642164
}
21652165
}
@@ -2246,7 +2246,7 @@ public static FlashpointSecurePlayerSection GetFlashpointSecurePlayerSection(boo
22462246
string name = GetValidEXEConfigurationName(exeConfigurationName);
22472247

22482248
if (!String.IsNullOrEmpty(name) && Shared.flashpointSecurePlayerSection != null) {
2249-
if (name.Equals(EXEConfigurationName, StringComparison.InvariantCultureIgnoreCase)) {
2249+
if (name.Equals(EXEConfigurationName, StringComparison.OrdinalIgnoreCase)) {
22502250
return Shared.flashpointSecurePlayerSection;
22512251
}
22522252
}
@@ -2664,8 +2664,10 @@ public static string AddLeadingSlash(string path) {
26642664
return path;
26652665
}
26662666
2667-
if (path.Length > 0 && path.Substring(0, 1) != "\\") {
2668-
path = "\\" + path;
2667+
const string SLASH = "\\";
2668+
2669+
if (!path.StartsWith(SLASH, StringComparison.Ordinal)) {
2670+
path = path.Insert(0, SLASH);
26692671
}
26702672
return path;
26712673
}
@@ -2676,12 +2678,13 @@ public static string RemoveLeadingSlash(string path) {
26762678
return path;
26772679
}
26782680
2679-
const int INDEX = 1;
2681+
const string SLASH = "\\";
26802682
2681-
while (path.Length > 0 && path.Substring(0, INDEX) == "\\") {
2682-
path = path.Substring(INDEX);
2683+
while (path.StartsWith(SLASH, StringComparison.Ordinal)) {
2684+
path = path.Substring(SLASH.Length);
26832685
}
26842686
return path;
2687+
//return path.TrimStart('\\');
26852688
}
26862689
*/
26872690

@@ -2691,8 +2694,10 @@ public static string AddTrailingSlash(string path) {
26912694
return path;
26922695
}
26932696

2694-
if (path.Length > 0 && path.Substring(path.Length - 1) != "\\") {
2695-
path = path + "\\";
2697+
const string SLASH = "\\";
2698+
2699+
if (!path.EndsWith(SLASH, StringComparison.Ordinal)) {
2700+
path = path.Insert(path.Length, SLASH);
26962701
}
26972702
return path;
26982703
}
@@ -2703,12 +2708,13 @@ public static string RemoveTrailingSlash(string path) {
27032708
return path;
27042709
}
27052710

2706-
int index = path.Length - 1;
2711+
const string SLASH = "\\";
27072712

2708-
while (path.Length > 0 && path.Substring(index) == "\\") {
2709-
path = path.Substring(0, index);
2713+
while (path.EndsWith(SLASH, StringComparison.Ordinal)) {
2714+
path = path.Remove(path.Length - SLASH.Length);
27102715
}
27112716
return path;
2717+
//return path.TrimEnd('\\');
27122718
}
27132719

27142720
public static object LengthenValue(object value, string path) {
@@ -2737,7 +2743,7 @@ public static object LengthenValue(object value, string path) {
27372743
}
27382744

27392745
// if the value is a short value...
2740-
if (!valueString.StartsWith(shortPathName, StringComparison.InvariantCultureIgnoreCase)) {
2746+
if (!valueString.StartsWith(shortPathName, StringComparison.OrdinalIgnoreCase)) {
27412747
return value;
27422748
}
27432749

@@ -2775,13 +2781,13 @@ public static object ReplaceStartupPathEnvironmentVariable(object lengthenedValu
27752781

27762782
longStartupPathName = RemoveTrailingSlash(longStartupPathName);
27772783

2778-
if (lengthenedValueString.Equals(longStartupPathName, StringComparison.InvariantCultureIgnoreCase)) {
2784+
if (lengthenedValueString.Equals(longStartupPathName, StringComparison.OrdinalIgnoreCase)) {
27792785
return "%" + FP_STARTUP_PATH + "%";
27802786
}
27812787

27822788
longStartupPathName = AddTrailingSlash(longStartupPathName);
27832789

2784-
if (lengthenedValueString.StartsWith(longStartupPathName, StringComparison.InvariantCultureIgnoreCase)) {
2790+
if (lengthenedValueString.StartsWith(longStartupPathName, StringComparison.OrdinalIgnoreCase)) {
27852791
return "%" + FP_STARTUP_PATH + "%\\" + lengthenedValueString.Substring(longStartupPathName.Length);
27862792
}
27872793
return lengthenedValue;

0 commit comments

Comments
 (0)