From b78b5575c3eeb3a61d078b1848c4167f65ee3b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sat, 9 Aug 2014 19:54:39 +0200 Subject: [PATCH] irc: fix memory leak in CTCP answer --- ChangeLog.asciidoc | 1 + src/plugins/irc/irc-ctcp.c | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog.asciidoc b/ChangeLog.asciidoc index 0d1205fec..4c003ae3a 100644 --- a/ChangeLog.asciidoc +++ b/ChangeLog.asciidoc @@ -128,6 +128,7 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] * alias: change default command for alias /beep to "/print -beep" * exec: add exec plugin: new command /exec and file exec.conf * guile: fix module used after unload of a script +* irc: fix memory leak in CTCP answer * irc: fix duplicate sender name in display of wallops (closes #142, closes #145) * irc: display locally away status changes in private buffers (in addition to diff --git a/src/plugins/irc/irc-ctcp.c b/src/plugins/irc/irc-ctcp.c index 00f849e4b..510d07633 100644 --- a/src/plugins/irc/irc-ctcp.c +++ b/src/plugins/irc/irc-ctcp.c @@ -417,17 +417,23 @@ irc_ctcp_replace_variables (struct t_irc_server *server, const char *format) * Linux 2.6.32-5-amd64 / x86_64 */ buf_uname = (struct utsname *)malloc (sizeof (struct utsname)); - if (buf_uname && (uname (buf_uname) >= 0)) + if (buf_uname) { - snprintf (buf, sizeof (buf), "%s %s / %s", - buf_uname->sysname, buf_uname->release, - buf_uname->machine); + if (uname (buf_uname) >= 0) + { + snprintf (buf, sizeof (buf), "%s %s / %s", + buf_uname->sysname, buf_uname->release, + buf_uname->machine); + temp = weechat_string_replace (res, "$osinfo", buf); + free (res); + if (!temp) + { + free (buf_uname); + return NULL; + } + res = temp; + } free (buf_uname); - temp = weechat_string_replace (res, "$osinfo", buf); - free (res); - if (!temp) - return NULL; - res = temp; } /*