Mercurial > irccd
changeset 1015:d55e98383ad0
irccd: protect already existing servers, plugins and hooks
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 17 Feb 2021 22:50:50 +0100 |
parents | cacb9e865635 |
children | c02a5c9cdde4 |
files | irccd/conf.y lib/irccd/irccd.c |
diffstat | 2 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/irccd/conf.y Wed Feb 17 20:43:53 2021 +0100 +++ b/irccd/conf.y Wed Feb 17 22:50:50 2021 +0100 @@ -430,6 +430,8 @@ struct string *str; char *at; + if (irc_bot_server_get($2)) + errx(1, "server %s already exists", $2); if (!$4->hostname) errx(1, "missing server hostname"); if (!$4->nickname) @@ -546,6 +548,8 @@ struct pair *kv; const char *location = $3 ? $3->location : NULL; + if (irc_bot_plugin_get($2)) + errx(1, "plugin %s already exists", $2); if (!(p = irc_bot_plugin_find($2, location))) goto cleanup; @@ -577,6 +581,9 @@ hook : T_HOOK T_STRING T_TO T_STRING { + if (irc_bot_hook_get($2)) + errx(1, "hook %s already exists", $2); + irc_bot_hook_add(irc_hook_new($2, $4)); free($2);
--- a/lib/irccd/irccd.c Wed Feb 17 20:43:53 2021 +0100 +++ b/lib/irccd/irccd.c Wed Feb 17 22:50:50 2021 +0100 @@ -277,6 +277,7 @@ irc_bot_server_add(struct irc_server *s) { assert(s); + assert(!irc_bot_server_get(s->name)); irc_log_info("irccd: added new server: %s", s->name); @@ -332,6 +333,7 @@ irc_bot_plugin_add(struct irc_plugin *p) { assert(p); + assert(!irc_bot_plugin_get(p->name)); LIST_INSERT_HEAD(&irc.plugins, p, link);