From 93472b41dedd8e30be8752c271f2b4bca392176a Mon Sep 17 00:00:00 2001 From: Matthias Dieter Wallnöfer Date: Mon, 22 Mar 2010 12:00:57 +0100 Subject: s4:registry - "patchfile_dotreg.c" - fix a memory leak Here we allocate memory on the "NULL" context through "reg_val_data_string" on each call of "set_value". So when we have written out the allocated data on the specified file descriptor we should immediately free this memory! Otherwise we may end up with a big memory consumption on big registry databases. --- source4/lib/registry/patchfile_dotreg.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'source4/lib') diff --git a/source4/lib/registry/patchfile_dotreg.c b/source4/lib/registry/patchfile_dotreg.c index 3b5708978d..12f2f70774 100644 --- a/source4/lib/registry/patchfile_dotreg.c +++ b/source4/lib/registry/patchfile_dotreg.c @@ -61,10 +61,12 @@ static WERROR reg_dotreg_diff_set_value(void *_data, const char *path, uint32_t value_type, DATA_BLOB value) { struct dotreg_data *data = (struct dotreg_data *)_data; - + char *data_string = reg_val_data_string(NULL, data->iconv_convenience, + value_type, value); + W_ERROR_HAVE_NO_MEMORY(data_string); fdprintf(data->fd, "\"%s\"=%s:%s\n", - value_name, str_regtype(value_type), - reg_val_data_string(NULL, data->iconv_convenience, value_type, value)); + value_name, str_regtype(value_type), data_string); + talloc_free(data_string); return WERR_OK; } -- cgit