Explorar el Código

bin/ircd: restrict nicknamesn to have a maximum length of nine characters

ghassmo hace 4 años
padre
commit
8e9fcccc7d
Se han modificado 2 ficheros con 9 adiciones y 0 borrados
  1. 4 0
      bin/ircd/src/protocol_privmsg.rs
  2. 5 0
      bin/ircd/src/server.rs

+ 4 - 0
bin/ircd/src/protocol_privmsg.rs

@@ -59,6 +59,10 @@ impl ProtocolPrivmsg {
         loop {
         loop {
             let msg = self.msg_sub.receive().await?;
             let msg = self.msg_sub.receive().await?;
 
 
+            if msg.nickname.len() > 10 {
+                continue
+            }
+
             if self.msg_ids.lock().await.contains(&msg.id) {
             if self.msg_ids.lock().await.contains(&msg.id) {
                 continue
                 continue
             }
             }

+ 5 - 0
bin/ircd/src/server.rs

@@ -111,6 +111,11 @@ impl IrcServerConnection {
             }
             }
             "NICK" => {
             "NICK" => {
                 let nickname = tokens.next().ok_or(Error::MalformedPacket)?;
                 let nickname = tokens.next().ok_or(Error::MalformedPacket)?;
+
+                if nickname.len() > 10 {
+                    return Ok(())
+                }
+
                 self.is_nick_init = true;
                 self.is_nick_init = true;
                 let old_nick = std::mem::replace(&mut self.nickname, nickname.to_string());
                 let old_nick = std::mem::replace(&mut self.nickname, nickname.to_string());