From 55d5f7970a4b42b0823acacee47c6ae3118ea086 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Tue, 9 Feb 2016 10:48:28 -0600 Subject: [PATCH] ircd: various memory leak fixes from pull requests --- ircd/irc_dictionary.c | 2 +- ircd/irc_radixtree.c | 2 ++ ircd/modules.c | 1 + ircd/newconf.c | 8 ++++---- ircd/substitution.c | 2 +- libratbox/src/snprintf.c | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ircd/irc_dictionary.c b/ircd/irc_dictionary.c index 6e86128c..e52b29b0 100644 --- a/ircd/irc_dictionary.c +++ b/ircd/irc_dictionary.c @@ -451,7 +451,7 @@ void irc_dictionary_destroy(struct Dictionary *dtree, } rb_dlinkDelete(&dtree->node, &dictionary_list); - + rb_free(dtree->id); rb_free(dtree); } diff --git a/ircd/irc_radixtree.c b/ircd/irc_radixtree.c index 8b57d7d7..5787490c 100644 --- a/ircd/irc_radixtree.c +++ b/ircd/irc_radixtree.c @@ -218,6 +218,8 @@ irc_radixtree_destroy(struct irc_radixtree *dtree, void (*destroy_cb)(const char irc_radixtree_delete(dtree, delem->leaf.key); } + rb_dlinkDelete(&dtree->node, &radixtree_list); + rb_free(dtree->id); rb_free(dtree); } diff --git a/ircd/modules.c b/ircd/modules.c index 91634cce..d2191b3f 100644 --- a/ircd/modules.c +++ b/ircd/modules.c @@ -707,6 +707,7 @@ unload_one_module(const char *name, int warn) lt_dlclose(modlist[modindex]->address); rb_free(modlist[modindex]->name); + rb_free(modlist[modindex]); memmove(&modlist[modindex], &modlist[modindex + 1], sizeof(struct module *) * ((num_mods - 1) - modindex)); diff --git a/ircd/newconf.c b/ircd/newconf.c index 72732d26..32ba83e3 100644 --- a/ircd/newconf.c +++ b/ircd/newconf.c @@ -864,8 +864,8 @@ conf_set_listen_port_both(void *data, int ssl) { if (!ssl) { - conf_report_error("listener '%s/%d': support for plaintext listeners is being deprecated and may be removed in a future release. " - "It is suggested that users be migrated to SSL/TLS connections.", listener_address, args->v.number); + conf_report_error("listener 'ANY/%d': support for plaintext listeners is being deprecated and may be removed in a future release. " + "It is suggested that users be migrated to SSL/TLS connections.", args->v.number); } add_listener(args->v.number, listener_address, AF_INET, ssl, ssl || yy_defer_accept); #ifdef RB_IPV6 @@ -884,8 +884,8 @@ conf_set_listen_port_both(void *data, int ssl) if (!ssl) { - conf_report_error("listener 'ANY/%d': support for plaintext listeners is being deprecated and may be removed in a future release. " - "It is suggested that users be migrated to SSL/TLS connections.", args->v.number); + conf_report_error("listener '%s/%d': support for plaintext listeners is being deprecated and may be removed in a future release. " + "It is suggested that users be migrated to SSL/TLS connections.", listener_address, args->v.number); } add_listener(args->v.number, listener_address, family, ssl, ssl || yy_defer_accept); diff --git a/ircd/substitution.c b/ircd/substitution.c index bb935510..3ed06e82 100644 --- a/ircd/substitution.c +++ b/ircd/substitution.c @@ -83,7 +83,7 @@ void substitution_free(rb_dlink_list *varlist) { struct substitution_variable *tmp = (struct substitution_variable *) nptr->data; - rb_dlinkDelete(nptr, varlist); + rb_dlinkDestroy(nptr, varlist); rb_free(tmp->name); rb_free(tmp->value); rb_free(tmp); diff --git a/libratbox/src/snprintf.c b/libratbox/src/snprintf.c index d2b7cfba..9c7a9db7 100644 --- a/libratbox/src/snprintf.c +++ b/libratbox/src/snprintf.c @@ -449,7 +449,7 @@ rb_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) s = va_arg(args, char *); if(s == NULL) { - abort(); /* prefer blowing up vs corrupt data */ + s = "(null)"; } len = rb_strnlen(s, precision);