Always specify Locale on toLowerCase and toUpperCase usages, fixes AuthMe not working correctly on machines with turkish locale. ('I'.toLowerCase() => 'ı')

This commit is contained in:
Gabriele C
2022-08-20 04:41:04 +02:00
parent c38e2aba28
commit 75b3a571e1
67 changed files with 217 additions and 143 deletions
@@ -15,6 +15,7 @@ import org.bukkit.Server;
import javax.inject.Inject;
import java.io.File;
import java.util.Collection;
import java.util.Locale;
import static fr.xephi.authme.util.FileUtils.makePath;
@@ -80,7 +81,7 @@ public class PurgeExecutor {
}
for (String file : dataFolder.list()) {
if (cleared.contains(file.toLowerCase())) {
if (cleared.contains(file.toLowerCase(Locale.ROOT))) {
File playerFile = new File(dataFolder, file);
if (playerFile.exists() && playerFile.delete()) {
i++;
@@ -137,7 +138,7 @@ public class PurgeExecutor {
if (name.equals(file)) {
continue;
}
if (cleared.contains(name.toLowerCase())) {
if (cleared.contains(name.toLowerCase(Locale.ROOT))) {
File dataFile = new File(dataFolder, file);
if (dataFile.exists() && dataFile.delete()) {
i++;
@@ -12,6 +12,7 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import java.util.UUID;
@@ -74,7 +75,7 @@ class PurgeTask extends BukkitRunnable {
}
OfflinePlayer offlinePlayer = offlinePlayers[nextPosition];
if (offlinePlayer.getName() != null && toPurge.remove(offlinePlayer.getName().toLowerCase())) {
if (offlinePlayer.getName() != null && toPurge.remove(offlinePlayer.getName().toLowerCase(Locale.ROOT))) {
if (!permissionsManager.loadUserData(offlinePlayer)) {
logger.warning("Unable to check if the user " + offlinePlayer.getName() + " can be purged!");
continue;