From 8edc0e450da2c0959c44da4811901782cc399649 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Thu, 16 Aug 2012 20:10:35 +0200 Subject: [PATCH] lvmetad: fix memleaks Release allocated buffers in daemon_logf, daemon_log_parse --- WHATS_NEW | 1 + libdaemon/server/daemon-log.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index dcd51ffa1..dc3b29e02 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.98 ================================= + Fix buffer memory leak in lvmetad logging. Use 'ignore' discards for thin metadata created with older versions. Use proper condition to check for unsupported discards settings. Update lvs manpage with discards (2.02.97). diff --git a/libdaemon/server/daemon-log.c b/libdaemon/server/daemon-log.c index caa40cbc1..21068bcff 100644 --- a/libdaemon/server/daemon-log.c +++ b/libdaemon/server/daemon-log.c @@ -59,6 +59,7 @@ void daemon_logf(log_state *s, int type, const char *fmt, ...) { if (dm_vasprintf(&buf, fmt, ap) < 0) return; /* _0 */ daemon_log(s, type, buf); + dm_free(buf); } struct log_line_baton { @@ -134,10 +135,14 @@ int daemon_log_parse(log_state *s, int outlet, const char *types, int enable) char *next = strchr(pos, ','); if (next) *next = 0; - if (!_parse_one(s, outlet, pos, enable)) + if (!_parse_one(s, outlet, pos, enable)) { + dm_free(buf); return 0; + } pos = next ? next + 1 : 0; } + dm_free(buf); + return 1; }