Mercurial > dovecot > core-2.2
changeset 19995:8891fcb7ea87
lib-master: Fixed memory leaks when failing to read settings.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 10 Apr 2016 14:57:48 +0300 |
parents | c497744ad9ba |
children | dbbcfdb60f1e |
files | src/lib-master/master-service-settings.c |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-master/master-service-settings.c Thu Apr 07 17:50:28 2016 +0300 +++ b/src/lib-master/master-service-settings.c Sun Apr 10 14:57:48 2016 +0300 @@ -483,6 +483,7 @@ } i_close_fd(&fd); config_exec_fallback(service, input); + settings_parser_deinit(&parser); return -1; } @@ -498,19 +499,23 @@ if (use_environment || service->keep_environment) { if (settings_parse_environ(parser) < 0) { - *error_r = settings_parser_get_error(parser); + *error_r = t_strdup(settings_parser_get_error(parser)); + settings_parser_deinit(&parser); return -1; } } if (array_is_created(&service->config_overrides)) { if (master_service_apply_config_overrides(service, parser, - error_r) < 0) + error_r) < 0) { + settings_parser_deinit(&parser); return -1; + } } if (!settings_parser_check(parser, service->set_pool, &error)) { *error_r = t_strdup_printf("Invalid settings: %s", error); + settings_parser_deinit(&parser); return -1; }