diff options
| author | Nakidai <nakidai@disroot.org> | 2026-02-01 20:41:03 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2026-02-01 20:41:03 +0300 |
| commit | 724205c1bc157b8933b1c63ec37014c2f07842ae (patch) | |
| tree | 72095dd58e091e2d849e8b36ac14af7b4df82aa8 /peer.c | |
| parent | e50f850d763e3b1e6b06b4b312512a5b006eabbc (diff) | |
| download | libreircd-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.c | 4 |
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; |