summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-12-22 22:12:54 +0100
committermetamuffin <metamuffin@disroot.org>2024-12-22 22:12:54 +0100
commitb7645692084a38b83ca20c1e66ecdebea541b837 (patch)
treeddf57a1273cb80b2263637a7390df8c0ed55abb9
parent9cc8d8319e9337b14372d9eb64ec9d9034a566d6 (diff)
downloadhurrycurry-b7645692084a38b83ca20c1e66ecdebea541b837.tar
hurrycurry-b7645692084a38b83ca20c1e66ecdebea541b837.tar.bz2
hurrycurry-b7645692084a38b83ca20c1e66ecdebea541b837.tar.zst
Enforce player name length limit and max player count
-rw-r--r--locale/en.ini2
-rw-r--r--server/src/server.rs8
2 files changed, 9 insertions, 1 deletions
diff --git a/locale/en.ini b/locale/en.ini
index eaa6933e..e1013727 100644
--- a/locale/en.ini
+++ b/locale/en.ini
@@ -229,6 +229,8 @@ s.error.quoting_invalid=Command quoting invalid
s.error.self_interact=Interacting with yourself. This is impossible.
s.error.tutorial_already_running=Tutorial already running
s.error.tutorial_no_running=No tutorial running
+s.error.username_length_limit=Username length limit of 64 bytes exceeded
+s.error.too_many_players=Too many players joined
s.replay.cannot_join=Replays cannot be joined.
s.state.abort_no_players=Game was aborted due to a lack of players.
s.state.game_aborted=Game was aborted by {0}.
diff --git a/server/src/server.rs b/server/src/server.rs
index b9cafede..f69ea5e4 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -23,7 +23,7 @@ use crate::{
scoreboard::ScoreboardStore,
tre, ConnectionID,
};
-use anyhow::{Context, Result};
+use anyhow::{bail, Context, Result};
use hurrycurry_client_lib::{Game, Involvement, Item, Player, Tile};
use hurrycurry_protocol::{
glam::{IVec2, Vec2},
@@ -369,6 +369,12 @@ impl Server {
id,
class,
} => {
+ if name.len() > 64 {
+ return Err(tre!("s.error.username_length_limit"));
+ }
+ if self.game.players.len() > 64 {
+ return Err(tre!("s.error.too_many_players"))
+ }
let id = id.unwrap_or_else(|| {
let id = self.player_id_counter;
self.player_id_counter.0 += 1;