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
@@ -14,6 +14,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import javax.inject.Inject;
import java.util.Locale;
public class AsyncChangePassword implements AsynchronousProcess {
@@ -42,7 +43,7 @@ public class AsyncChangePassword implements AsynchronousProcess {
* @param newPassword the new password chosen by the player
*/
public void changePassword(Player player, String oldPassword, String newPassword) {
String name = player.getName().toLowerCase();
String name = player.getName().toLowerCase(Locale.ROOT);
PlayerAuth auth = playerCache.getAuth(name);
if (passwordSecurity.comparePassword(oldPassword, auth.getPassword(), player.getName())) {
HashedPassword hashedPassword = passwordSecurity.computeHash(newPassword, name);
@@ -71,7 +72,7 @@ public class AsyncChangePassword implements AsynchronousProcess {
* @param newPassword the new password chosen for the player
*/
public void changePasswordAsAdmin(CommandSender sender, String playerName, String newPassword) {
String lowerCaseName = playerName.toLowerCase();
String lowerCaseName = playerName.toLowerCase(Locale.ROOT);
if (!(playerCache.isAuthenticated(lowerCaseName) || dataSource.isAuthAvailable(lowerCaseName))) {
if (sender == null) {
logger.warning("Tried to change password for user " + lowerCaseName + " but it doesn't exist!");