Skip to content

Commit 925f752

Browse files
fix(punishment): validate parseDuration result to prevent silent permanent bans
1 parent e60e2e2 commit 925f752

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

type.generic/src/main/java/net/swofty/type/generic/command/commands/BanCommand.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,12 @@ public void registerUsage(MinestomCommand command) {
6464

6565
CompletableFuture.runAsync(() -> {
6666
try {
67-
UUID targetUuid = net.minestom.server.utils.mojang.MojangUtils.getUUID(playerName);
6867
long actualTime = StringUtility.parseDuration(duration);
68+
if (actualTime <= 0) {
69+
player.sendMessage("§cInvalid duration format. Use e.g. 30d, 12h, 30m, 10s.");
70+
return;
71+
}
72+
UUID targetUuid = net.minestom.server.utils.mojang.MojangUtils.getUUID(playerName);
6973
long expiryTime = System.currentTimeMillis() + actualTime;
7074
banPlayer(player, targetUuid, type, player.getUuid(), actualTime, expiryTime, playerName, null);
7175
} catch (IOException e) {

type.generic/src/main/java/net/swofty/type/generic/command/commands/MuteCommand.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ public void registerUsage(MinestomCommand command) {
5757

5858
CompletableFuture.runAsync(() -> {
5959
try {
60-
UUID targetUuid = net.minestom.server.utils.mojang.MojangUtils.getUUID(playerName);
6160
long actualTime = StringUtility.parseDuration(duration);
61+
if (actualTime <= 0) {
62+
player.sendMessage("§cInvalid duration format. Use e.g. 30d, 12h, 30m, 10s.");
63+
return;
64+
}
65+
UUID targetUuid = net.minestom.server.utils.mojang.MojangUtils.getUUID(playerName);
6266
long expiryTime = System.currentTimeMillis() + actualTime;
6367
mutePlayer(player, targetUuid, type, player.getUuid(), actualTime, expiryTime, playerName);
6468
} catch (IOException e) {

0 commit comments

Comments
 (0)