1
0
mirror of https://github.com/lucko/LuckPerms.git synced 2025-08-30 17:49:48 +02:00

Fix toLowerCase/toUpperCase locale sensitivity

This commit is contained in:
Luck
2021-08-25 20:09:20 +01:00
parent 062fca3f75
commit 9cd33d26f2
110 changed files with 310 additions and 184 deletions

View File

@@ -46,6 +46,7 @@ import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -239,7 +240,7 @@ public class LuckPermsPermissionAttachment extends PermissionAttachment {
Objects.requireNonNull(name, "name is null");
Preconditions.checkArgument(!name.isEmpty(), "name is empty");
String permission = name.toLowerCase();
String permission = name.toLowerCase(Locale.ROOT);
Boolean previous = this.perms.put(permission, value);
if (previous != null && previous == value) {
@@ -264,7 +265,7 @@ public class LuckPermsPermissionAttachment extends PermissionAttachment {
Objects.requireNonNull(name, "name is null");
Preconditions.checkArgument(!name.isEmpty(), "name is empty");
String permission = name.toLowerCase();
String permission = name.toLowerCase(Locale.ROOT);
Boolean previous = this.perms.remove(permission);
if (previous == null) {

View File

@@ -43,6 +43,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -140,7 +141,7 @@ public final class LuckPermsDefaultsMap implements Map<Boolean, Set<Permission>>
protected @NonNull Map<String, Boolean> supply() {
Map<String, Boolean> builder = new HashMap<>();
for (Permission perm : LuckPermsDefaultsMap.this.get(this.op)) {
String name = perm.getName().toLowerCase();
String name = perm.getName().toLowerCase(Locale.ROOT);
builder.put(name, true);
for (Map.Entry<String, Boolean> child : LuckPermsDefaultsMap.this.plugin.getPermissionMap().getChildPermissions(name, true).entrySet()) {
builder.putIfAbsent(child.getKey(), child.getValue());

View File

@@ -40,6 +40,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
import java.lang.reflect.Field;
import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
@@ -180,7 +181,7 @@ public final class LuckPermsPermissionMap extends ForwardingMap<String, Permissi
continue;
}
String key = e.getKey().toLowerCase();
String key = e.getKey().toLowerCase(Locale.ROOT);
if (accumulator.containsKey(key)) {
continue; // Prevent infinite loops

View File

@@ -38,6 +38,7 @@ import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.event.server.RemoteServerCommandEvent;
import org.bukkit.event.server.ServerCommandEvent;
import java.util.Locale;
import java.util.regex.Pattern;
public class BukkitPlatformListener implements Listener {
@@ -51,17 +52,17 @@ public class BukkitPlatformListener implements Listener {
@EventHandler(ignoreCancelled = true)
public void onPlayerCommand(PlayerCommandPreprocessEvent e) {
handleCommand(e.getPlayer(), e.getMessage().toLowerCase(), e);
handleCommand(e.getPlayer(), e.getMessage().toLowerCase(Locale.ROOT), e);
}
@EventHandler(ignoreCancelled = true)
public void onServerCommand(ServerCommandEvent e) {
handleCommand(e.getSender(), e.getCommand().toLowerCase(), e);
handleCommand(e.getSender(), e.getCommand().toLowerCase(Locale.ROOT), e);
}
@EventHandler(ignoreCancelled = true)
public void onRemoteServerCommand(RemoteServerCommandEvent e) {
handleCommand(e.getSender(), e.getCommand().toLowerCase(), e);
handleCommand(e.getSender(), e.getCommand().toLowerCase(Locale.ROOT), e);
}
private void handleCommand(CommandSender sender, String cmdLine, Cancellable event) {

View File

@@ -49,6 +49,7 @@ import net.luckperms.api.query.Flag;
import net.luckperms.api.query.QueryOptions;
import net.milkbowl.vault.chat.Chat;
import java.util.Locale;
import java.util.Objects;
import java.util.UUID;
@@ -254,7 +255,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat {
private void setMeta(PermissionHolder holder, String key, Object value, String world) {
if (key.equalsIgnoreCase(Prefix.NODE_KEY) || key.equalsIgnoreCase(Suffix.NODE_KEY)) {
setChatMeta(holder, ChatMetaType.valueOf(key.toUpperCase()), value == null ? null : value.toString(), world);
setChatMeta(holder, ChatMetaType.valueOf(key.toUpperCase(Locale.ROOT)), value == null ? null : value.toString(), world);
return;
}
@@ -277,7 +278,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat {
private QueryOptions createQueryOptionsForWorldSet(String world) {
ImmutableContextSet.Builder context = new ImmutableContextSetImpl.BuilderImpl();
if (world != null && !world.isEmpty() && !world.equalsIgnoreCase("global")) {
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase());
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase(Locale.ROOT));
}
context.add(DefaultContextKeys.SERVER_KEY, this.vaultPermission.getVaultServer());

View File

@@ -59,6 +59,7 @@ import net.milkbowl.vault.permission.Permission;
import org.bukkit.entity.Player;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.Locale;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
@@ -348,7 +349,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
// remove already accumulated worlds
context.removeAll(DefaultContextKeys.WORLD_KEY);
// add the vault world
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase());
context.add(DefaultContextKeys.WORLD_KEY, world.toLowerCase(Locale.ROOT));
}
// if we're using a special vault server