From e7f73d66da51be79776c9c28ed4738a5635a1c8a Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sun, 5 Apr 2020 13:00:05 -0400 Subject: Error on invalid ISUPPORT values --- litterbox.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/litterbox.c b/litterbox.c index 4a65166..08b98ac 100644 --- a/litterbox.c +++ b/litterbox.c @@ -177,12 +177,22 @@ static void handleReplyISupport(struct Message *msg) { set(&chanTypes, msg->params[i]); } else if (!strcmp(key, "PREFIX")) { strsep(&msg->params[i], "("); - set(&prefixModes, strsep(&msg->params[i], ")")); + char *modes = strsep(&msg->params[i], ")"); + if (!modes || !msg->params[i]) { + errx(EX_PROTOCOL, "invalid PREFIX value"); + } + set(&prefixModes, modes); set(&prefixes, msg->params[i]); } else if (!strcmp(key, "CHANMODES")) { - set(&listModes, strsep(&msg->params[i], ",")); - set(¶mModes, strsep(&msg->params[i], ",")); - set(&setParamModes, strsep(&msg->params[i], ",")); + char *list = strsep(&msg->params[i], ","); + char *param = strsep(&msg->params[i], ","); + char *setParam = strsep(&msg->params[i], ","); + if (!list || !param || !setParam) { + errx(EX_PROTOCOL, "invalid CHANMODES value"); + } + set(&listModes, list); + set(¶mModes, param); + set(&setParamModes, setParam); } } } -- cgit 1.4.1