From 5d8dc670bd62d50a786912051fe1e2a0d636b7f9 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Sun, 14 Jun 2026 17:41:42 +0200 Subject: [PATCH] fix(rcon): cap subscription duration changes --- .../messages/rcon/ModifyUserSubscription.java | 30 ++++++++++++--- .../rcon/ModifyUserSubscriptionGuardTest.java | 38 +++++++++++++++++++ 2 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 Emulator/src/test/java/com/eu/habbo/messages/rcon/ModifyUserSubscriptionGuardTest.java diff --git a/Emulator/src/main/java/com/eu/habbo/messages/rcon/ModifyUserSubscription.java b/Emulator/src/main/java/com/eu/habbo/messages/rcon/ModifyUserSubscription.java index 6504725d..0d299502 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/rcon/ModifyUserSubscription.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/rcon/ModifyUserSubscription.java @@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory; public class ModifyUserSubscription extends RCONMessage { private static final Logger LOGGER = LoggerFactory.getLogger(ModifyUserSubscription.class); + static final int DEFAULT_MAX_DURATION_SECONDS = 31_536_000; public ModifyUserSubscription() { super(ModifyUserSubscription.JSON.class); @@ -38,10 +39,11 @@ public class ModifyUserSubscription extends RCONMessage= 1 && duration <= maxDuration; + } + + static int parseMaxDuration(String configured) { + try { + int parsed = Integer.parseInt(configured); + if (parsed > 0) { + return parsed; + } + } catch (NumberFormatException ignored) { + } + + return DEFAULT_MAX_DURATION_SECONDS; + } + static class JSON { public int user_id; @@ -96,4 +114,4 @@ public class ModifyUserSubscription extends RCONMessage