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:
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 */
}