summary refs log tree commit diff
path: root/peer.c
diff options
context:
space:
mode:
authorNakidai <nakidai@disroot.org>2026-02-01 20:41:03 +0300
committerNakidai <nakidai@disroot.org>2026-02-01 20:41:03 +0300
commit724205c1bc157b8933b1c63ec37014c2f07842ae (patch)
tree72095dd58e091e2d849e8b36ac14af7b4df82aa8 /peer.c
parente50f850d763e3b1e6b06b4b312512a5b006eabbc (diff)
downloadlibreircd-724205c1bc157b8933b1c63ec37014c2f07842ae.tar.gz
libreircd-724205c1bc157b8933b1c63ec37014c2f07842ae.zip
Add validation
Now there can't be single \r or \n in the message, erroneous nicks and
channel names are rejected, and usernames are stripped on '@'
Diffstat (limited to 'peer.c')
-rw-r--r--peer.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/peer.c b/peer.c
index 3634834..13d0f2a 100644
--- a/peer.c
+++ b/peer.c
@@ -47,7 +47,9 @@ handle(struct Peer *peer)
 		}
 
 		*p = 0;
-		if (parse_message(peer->buf, &msg))
+		if (memchr(peer->buf, '\n', sizeof(peer->buf))
+		 || memchr(peer->buf, '\r', sizeof(peer->buf))
+		 || parse_message(peer->buf, &msg))
 		{
 			warnx("malformed input from %d", peer->fd);
 			goto next;