From: Timo Sirainen Date: Mon, 16 Nov 2020 12:56:50 +0000 (+0200) Subject: lib-settings: settings_check() - Avoid growing data stack unnecessarily X-Git-Tag: 2.3.16~245 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f520a62a2502c26f7aa5d0a72dc8a0bb6f8609e3;p=thirdparty%2Fdovecot%2Fcore.git lib-settings: settings_check() - Avoid growing data stack unnecessarily Each check_func() could have increased data stack usage. Add it inside a data stack frame to avoid it growing unnecessarily large. --- diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 4fc662ba90..7b63b30f25 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -1193,9 +1193,13 @@ bool settings_check(const struct setting_parser_info *info, pool_t pool, const ARRAY_TYPE(void_array) *val; void *const *children; unsigned int i, count; + bool valid; if (info->check_func != NULL) { - if (!info->check_func(set, pool, error_r)) + T_BEGIN { + valid = info->check_func(set, pool, error_r); + } T_END_PASS_STR_IF(!valid, error_r); + if (!valid) return FALSE; }