ii

irc it, simple FIFO based irc client
git clone git://git.suckless.org/ii
Log | Files | Refs | README | LICENSE

commit ce3933a43568effd1d463fab5f1e69a2ed5961e4
parent b6b5be5ebba548dfc0c61cd54704980d2fc50916
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Mon,  6 Apr 2026 11:03:57 +0200

avoid snprintf using NULL pointer with %s

- PONG should have an argument, ignore if it does not have one.
- check TOK_TEXT for NULL.

Based on a patch from Aaron Burrow, thanks!

Diffstat:
Mii.c | 9++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/ii.c b/ii.c @@ -616,10 +616,12 @@ proc_server_cmd(int fd, char *buf) tokenize(&argv[TOK_CMD], TOK_LAST - TOK_CMD, cmd, ' '); if (!argv[TOK_CMD] || !strcmp("PONG", argv[TOK_CMD])) { - snprintf(msg, sizeof(msg), "-!- %s %s", argv[TOK_CMD], argv[TOK_TEXT]); + snprintf(msg, sizeof(msg), "-!- %s %s", + argv[TOK_CMD] ? argv[TOK_CMD] : "", + argv[TOK_TEXT] ? argv[TOK_TEXT] : ""); channel_print(channelmaster, msg); return; - } else if (!strcmp("PING", argv[TOK_CMD])) { + } else if (!strcmp("PING", argv[TOK_CMD]) && argv[TOK_TEXT]) { channel_print(channelmaster, "-!- sending PONG to PING request"); snprintf(msg, sizeof(msg), "PONG %s\r\n", argv[TOK_TEXT]); channel_print(channelmaster, msg); @@ -679,7 +681,8 @@ proc_server_cmd(int fd, char *buf) snprintf(msg, sizeof(msg), "<%s> %s", argv[TOK_NICKSRV], argv[TOK_TEXT] ? argv[TOK_TEXT] : ""); } else { - snprintf(msg, sizeof(msg), "-!- unknown cmd %s", argv[TOK_TEXT]); + snprintf(msg, sizeof(msg), "-!- unknown cmd %s", + argv[TOK_TEXT] ? argv[TOK_TEXT] : ""); channel_print(channelmaster, msg); return; /* can't read this message */ }