From fe0a9858249e52e8ea685eeb08026fccd6841b21 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Fri, 22 Sep 2006 01:35:03 +0000 Subject: [PATCH] Make IRC message handler 'text' const. src/chanserv.c (chanserv_ctcp_check): Make 'text' parameter const. src/mod-helpserv.c (helpserv_usermsg): Likewise. (helpserv_botmsg): Likewise. src/modcmd.c (svccmd_invoke): Likewise. (modcmd_privmsg): Likewise. (modcmd_chanmsg): Likewise. src/modcmd.h (SVCMSG_HOOK): Likewise. src/proto.h (chanmsg_func_t): Likewise. (privmsg_func_t): Likewise. git-archimport-id: srvx@srvx.net--2006/srvx--devo--1.3--patch-34 --- ChangeLog | 26 ++++++++++++++++++++++++++ src/chanserv.c | 6 +++--- src/mod-helpserv.c | 14 ++++++++------ src/modcmd.c | 12 +++++++----- src/modcmd.h | 4 ++-- src/proto.h | 6 +++--- 6 files changed, 49 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a982fc..1f70b3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,32 @@ # arch-tag: automatic-ChangeLog--srvx@srvx.net--2006/srvx--devo--1.3 # +2006-09-22 01:35:03 GMT Michael Poole patch-34 + + Summary: + Make IRC message handler 'text' const. + Revision: + srvx--devo--1.3--patch-34 + + src/chanserv.c (chanserv_ctcp_check): Make 'text' parameter const. + + src/mod-helpserv.c (helpserv_usermsg): Likewise. + (helpserv_botmsg): Likewise. + + src/modcmd.c (svccmd_invoke): Likewise. + (modcmd_privmsg): Likewise. + (modcmd_chanmsg): Likewise. + + src/modcmd.h (SVCMSG_HOOK): Likewise. + + src/proto.h (chanmsg_func_t): Likewise. + (privmsg_func_t): Likewise. + + modified files: + ChangeLog src/chanserv.c src/mod-helpserv.c src/modcmd.c + src/modcmd.h src/proto.h + + 2006-09-22 01:23:43 GMT Michael Poole patch-33 Summary: diff --git a/src/chanserv.c b/src/chanserv.c index 9fe095e..3ee0aef 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -1,5 +1,5 @@ /* chanserv.c - Channel service bot - * Copyright 2000-2004 srvx Development Team + * Copyright 2000-2006 srvx Development Team * * This file is part of srvx. * @@ -788,7 +788,7 @@ scan_user_presence(struct userData *uData, struct userNode *user) } static void -chanserv_ctcp_check(struct userNode *user, struct chanNode *channel, char *text, UNUSED_ARG(struct userNode *bot)) +chanserv_ctcp_check(struct userNode *user, struct chanNode *channel, const char *text, UNUSED_ARG(struct userNode *bot)) { unsigned int eflags, argc; char *argv[4]; @@ -805,7 +805,7 @@ chanserv_ctcp_check(struct userNode *user, struct chanNode *channel, char *text, return; /* We need to enforce against them; do so. */ eflags = 0; - argv[0] = text; + argv[0] = (char*)text; argv[1] = user->nick; argc = 2; if(GetUserMode(channel, user)) diff --git a/src/mod-helpserv.c b/src/mod-helpserv.c index 91031f1..e8053d5 100644 --- a/src/mod-helpserv.c +++ b/src/mod-helpserv.c @@ -1,5 +1,5 @@ /* mod-helpserv.c - Support Helper assistant service - * Copyright 2002-2003 srvx Development Team + * Copyright 2002-2003, 2006 srvx Development Team * * This file is part of srvx. * @@ -967,7 +967,7 @@ static struct helpserv_request * create_request(struct userNode *user, struct he } /* Handle a message from a user to a HelpServ bot. */ -static void helpserv_usermsg(struct userNode *user, struct helpserv_bot *hs, char *text) { +static void helpserv_usermsg(struct userNode *user, struct helpserv_bot *hs, const char *text) { const int from_opserv = 0; /* for helpserv_notice */ struct helpserv_request *req=NULL, *newest=NULL; struct helpserv_reqlist *reqlist, *hand_reqlist; @@ -1091,11 +1091,12 @@ static void helpserv_usermsg(struct userNode *user, struct helpserv_bot *hs, cha } /* Handle messages direct to a HelpServ bot. */ -static void helpserv_botmsg(struct userNode *user, struct userNode *target, char *text, UNUSED_ARG(int server_qualified)) { +static void helpserv_botmsg(struct userNode *user, struct userNode *target, const char *text, UNUSED_ARG(int server_qualified)) { struct helpserv_bot *hs; struct helpserv_cmd *cmd; struct helpserv_user *hs_user; char *argv[MAXNUMPARAMS]; + char tmpline[MAXLEN]; int argc, argv_shift; const int from_opserv = 0; /* for helpserv_notice */ @@ -1113,7 +1114,8 @@ static void helpserv_botmsg(struct userNode *user, struct userNode *target, char } argv_shift = 1; - argc = split_line(text, false, ArrayLength(argv)-argv_shift, argv+argv_shift); + safestrncpy(tmpline, text, sizeof(tmpline)); + argc = split_line(tmpline, false, ArrayLength(argv)-argv_shift, argv+argv_shift); if (!argc) return; @@ -1133,8 +1135,8 @@ static void helpserv_botmsg(struct userNode *user, struct userNode *target, char if (!cmd->func) { helpserv_notice(user, "HSMSG_INTERNAL_COMMAND", argv[argv_shift]); } else if (cmd->func(user, hs, 0, argc, argv+argv_shift)) { - unsplit_string(argv+argv_shift, argc, text); - log_audit(HS_LOG, LOG_COMMAND, user, hs->helpserv, hs->helpchan->name, 0, text); + unsplit_string(argv+argv_shift, argc, tmpline); + log_audit(HS_LOG, LOG_COMMAND, user, hs->helpserv, hs->helpchan->name, 0, tmpline); } } diff --git a/src/modcmd.c b/src/modcmd.c index 2ae4db5..2e83300 100644 --- a/src/modcmd.c +++ b/src/modcmd.c @@ -1,5 +1,5 @@ /* modcmd.c - Generalized module command support - * Copyright 2002-2004 srvx Development Team + * Copyright 2002-2006 srvx Development Team * * This file is part of srvx. * @@ -795,9 +795,10 @@ svccmd_send_help_2(struct userNode *user, struct service *service, const char *t } static int -svccmd_invoke(struct userNode *user, struct service *service, struct chanNode *channel, char *text, int server_qualified) { +svccmd_invoke(struct userNode *user, struct service *service, struct chanNode *channel, const char *text, int server_qualified) { unsigned int argc; char *argv[MAXNUMPARAMS]; + char tmpline[MAXLEN]; if (!*text) return 0; @@ -815,12 +816,13 @@ svccmd_invoke(struct userNode *user, struct service *service, struct chanNode *c return 0; } } - argc = split_line(text, false, ArrayLength(argv), argv); + safestrncpy(tmpline, text, sizeof(tmpline)); + argc = split_line(tmpline, false, ArrayLength(argv), argv); return argc ? svccmd_invoke_argv(user, service, channel, argc, argv, server_qualified) : 0; } void -modcmd_privmsg(struct userNode *user, struct userNode *bot, char *text, int server_qualified) { +modcmd_privmsg(struct userNode *user, struct userNode *bot, const char *text, int server_qualified) { struct service *service; if (!(service = dict_find(services, bot->nick, NULL))) { @@ -885,7 +887,7 @@ modcmd_privmsg(struct userNode *user, struct userNode *bot, char *text, int serv } void -modcmd_chanmsg(struct userNode *user, struct chanNode *chan, char *text, struct userNode *bot) { +modcmd_chanmsg(struct userNode *user, struct chanNode *chan, const char *text, struct userNode *bot) { struct service *service; if (!(service = dict_find(services, bot->nick, NULL))) return; svccmd_invoke(user, service, chan, text, 0); diff --git a/src/modcmd.h b/src/modcmd.h index c9dbee9..3523356 100644 --- a/src/modcmd.h +++ b/src/modcmd.h @@ -1,5 +1,5 @@ /* modcmd.h - Generalized module command support - * Copyright 2002-2004 srvx Development Team + * Copyright 2002-2006 srvx Development Team * * This file is part of srvx. * @@ -32,7 +32,7 @@ struct modcmd; #define MODCMD_FUNC(NAME) int NAME(struct userNode *user, UNUSED_ARG(struct chanNode *channel), UNUSED_ARG(unsigned int argc), UNUSED_ARG(char **argv), UNUSED_ARG(struct svccmd *cmd)) typedef MODCMD_FUNC(modcmd_func_t); -#define SVCMSG_HOOK(NAME) int NAME(struct userNode *user, struct userNode *target, char *text, int server_qualified); +#define SVCMSG_HOOK(NAME) int NAME(struct userNode *user, struct userNode *target, const char *text, int server_qualified); typedef SVCMSG_HOOK(svcmsg_hook_t); DECLARE_LIST(svccmd_list, struct svccmd*); diff --git a/src/proto.h b/src/proto.h index 16d546d..8f6bb0b 100644 --- a/src/proto.h +++ b/src/proto.h @@ -1,5 +1,5 @@ /* proto.h - IRC protocol output - * Copyright 2000-2004 srvx Development Team + * Copyright 2000-2006 srvx Development Team * * This file is part of srvx. * @@ -94,12 +94,12 @@ void init_parse(void); int parse_line(char *line, int recursive); /* Callback notifications for protocol support. */ -typedef void (*chanmsg_func_t) (struct userNode *user, struct chanNode *chan, char *text, struct userNode *bot); +typedef void (*chanmsg_func_t) (struct userNode *user, struct chanNode *chan, const char *text, struct userNode *bot); void reg_chanmsg_func(unsigned char prefix, struct userNode *service, chanmsg_func_t handler); void reg_allchanmsg_func(struct userNode *service, chanmsg_func_t handler); struct userNode *get_chanmsg_bot(unsigned char prefix); -typedef void (*privmsg_func_t) (struct userNode *user, struct userNode *target, char *text, int server_qualified); +typedef void (*privmsg_func_t) (struct userNode *user, struct userNode *target, const char *text, int server_qualified); void reg_privmsg_func(struct userNode *user, privmsg_func_t handler); void reg_notice_func(struct userNode *user, privmsg_func_t handler); void unreg_privmsg_func(struct userNode *user, privmsg_func_t handler); -- 2.20.1