You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
Merge pull request #228 from simoleo89/fix/modtool-inputs
fix(modtool): bound staff supplied targets
This commit is contained in:
+1
-1
@@ -14,7 +14,7 @@ public class ModToolAlertEvent extends MessageHandler {
|
|||||||
int userId = this.packet.readInt();
|
int userId = this.packet.readInt();
|
||||||
String message = ModToolInputGuard.normalize(this.packet.readString());
|
String message = ModToolInputGuard.normalize(this.packet.readString());
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -10,7 +10,13 @@ public class ModToolChangeRoomSettingsEvent extends MessageHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.packet.readInt());
|
int roomId = this.packet.readInt();
|
||||||
|
|
||||||
|
if (!ModToolTicketGuard.isPositiveId(roomId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId);
|
||||||
|
|
||||||
if (room != null) {
|
if (room != null) {
|
||||||
final boolean lockDoor = this.packet.readInt() == 1;
|
final boolean lockDoor = this.packet.readInt() == 1;
|
||||||
|
|||||||
+4
@@ -19,6 +19,10 @@ public class ModToolIssueDefaultSanctionEvent extends MessageHandler {
|
|||||||
this.packet.readInt();
|
this.packet.readInt();
|
||||||
int category = this.packet.readInt();
|
int category = this.packet.readInt();
|
||||||
|
|
||||||
|
if (!ModToolTicketGuard.isPositiveId(issueId) || !ModToolTicketGuard.isPositiveId(category)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ModToolIssue issue = Emulator.getGameEnvironment().getModToolManager().getTicket(issueId);
|
ModToolIssue issue = Emulator.getGameEnvironment().getModToolManager().getTicket(issueId);
|
||||||
|
|
||||||
if (issue == null) {
|
if (issue == null) {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class ModToolKickEvent extends MessageHandler {
|
|||||||
int userId = this.packet.readInt();
|
int userId = this.packet.readInt();
|
||||||
String message = ModToolInputGuard.normalize(this.packet.readString());
|
String message = ModToolInputGuard.normalize(this.packet.readString());
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
@@ -13,6 +13,10 @@ public class ModToolRequestRoomInfoEvent extends MessageHandler {
|
|||||||
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
||||||
int roomId = this.packet.readInt();
|
int roomId = this.packet.readInt();
|
||||||
|
|
||||||
|
if (!ModToolTicketGuard.isPositiveId(roomId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId);
|
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId);
|
||||||
|
|
||||||
if (room != null) {
|
if (room != null) {
|
||||||
|
|||||||
+4
@@ -12,6 +12,10 @@ public class ModToolRequestRoomVisitsEvent extends MessageHandler {
|
|||||||
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
||||||
int userId = this.packet.readInt();
|
int userId = this.packet.readInt();
|
||||||
|
|
||||||
|
if (!ModToolTicketGuard.isPositiveId(userId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
HabboInfo habboInfo = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(userId);
|
HabboInfo habboInfo = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(userId);
|
||||||
|
|
||||||
if (habboInfo != null) {
|
if (habboInfo != null) {
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ public class ModToolSanctionAlertEvent extends MessageHandler {
|
|||||||
String message = ModToolInputGuard.normalize(this.packet.readString());
|
String message = ModToolInputGuard.normalize(this.packet.readString());
|
||||||
int cfhTopic = this.packet.readInt();
|
int cfhTopic = this.packet.readInt();
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolTicketGuard.isPositiveId(cfhTopic) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ public class ModToolSanctionBanEvent extends MessageHandler {
|
|||||||
|
|
||||||
int duration = 0;
|
int duration = 0;
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolTicketGuard.isPositiveId(cfhTopic) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@ public class ModToolSanctionMuteEvent extends MessageHandler {
|
|||||||
String message = ModToolInputGuard.normalize(this.packet.readString());
|
String message = ModToolInputGuard.normalize(this.packet.readString());
|
||||||
int cfhTopic = this.packet.readInt();
|
int cfhTopic = this.packet.readInt();
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolTicketGuard.isPositiveId(cfhTopic) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ public class ModToolSanctionTradeLockEvent extends MessageHandler {
|
|||||||
int duration = this.packet.readInt();
|
int duration = this.packet.readInt();
|
||||||
int cfhTopic = this.packet.readInt();
|
int cfhTopic = this.packet.readInt();
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolTicketGuard.isPositiveId(cfhTopic) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class ModToolWarnEvent extends MessageHandler {
|
|||||||
int userId = this.packet.readInt();
|
int userId = this.packet.readInt();
|
||||||
String message = ModToolInputGuard.normalize(this.packet.readString());
|
String message = ModToolInputGuard.normalize(this.packet.readString());
|
||||||
|
|
||||||
if (!ModToolInputGuard.isSafeMessage(message)) {
|
if (!ModToolTicketGuard.isPositiveId(userId) || !ModToolInputGuard.isSafeMessage(message)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+24
@@ -109,4 +109,28 @@ class ModToolPermissionContractTest {
|
|||||||
handler + " must reject empty or oversized staff-supplied text");
|
handler + " must reject empty or oversized staff-supplied text");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void staffSuppliedModToolTargetsArePositiveBeforeLookupOrMutation() throws Exception {
|
||||||
|
Path base = Path.of("src/main/java/com/eu/habbo/messages/incoming/modtool");
|
||||||
|
|
||||||
|
for (String handler : List.of(
|
||||||
|
"ModToolAlertEvent.java",
|
||||||
|
"ModToolWarnEvent.java",
|
||||||
|
"ModToolKickEvent.java",
|
||||||
|
"ModToolChangeRoomSettingsEvent.java",
|
||||||
|
"ModToolRequestRoomInfoEvent.java",
|
||||||
|
"ModToolRequestRoomVisitsEvent.java",
|
||||||
|
"ModToolIssueDefaultSanctionEvent.java",
|
||||||
|
"ModToolSanctionAlertEvent.java",
|
||||||
|
"ModToolSanctionBanEvent.java",
|
||||||
|
"ModToolSanctionMuteEvent.java",
|
||||||
|
"ModToolSanctionTradeLockEvent.java"
|
||||||
|
)) {
|
||||||
|
String source = Files.readString(base.resolve(handler));
|
||||||
|
|
||||||
|
assertTrue(source.contains("ModToolTicketGuard.isPositiveId"),
|
||||||
|
handler + " must reject zero or negative client-provided ids before manager/database lookups");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user