From: Arran Cudbard-Bell Date: Thu, 22 Jun 2017 14:50:46 +0000 (-0400) Subject: Mark pairs as parsed X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f334aed22cc7f5645976c3f73c538d80b6d021bb;p=thirdparty%2Ffreeradius-server.git Mark pairs as parsed --- diff --git a/src/main/cf_parse.c b/src/main/cf_parse.c index cdfc6efe01c..71609fcf71b 100644 --- a/src/main/cf_parse.c +++ b/src/main/cf_parse.c @@ -605,17 +605,22 @@ static int cf_pair_parse_internal(TALLOC_CTX *ctx, void *out, CONF_SECTION *cs, } for (i = 0; i < count; i++, cp = cf_pair_find_next(cs, cp, rule->name)) { + int ret; cf_parse_t func = cf_pair_parse_value; if (rule->func) { + cf_log_debug(cs, "%.*s%s = %s", PAIR_SPACE(cs), parse_spaces, + cf_pair_attr(cp), cp->value); func = rule->func; - cf_log_debug(cs, "%.*s%s = %s", PAIR_SPACE(cs), parse_spaces, cf_pair_attr(cp), cp->value); } - if (func(ctx, &array[i], cf_pair_to_item(cp), rule) < 0) { + + ret = func(ctx, &array[i], cf_pair_to_item(cp), rule); + if (ret < 0) { talloc_free(array); talloc_free(dflt_cp); return -1; } + cp->parsed = true; } *(void **)out = array; @@ -624,8 +629,9 @@ static int cf_pair_parse_internal(TALLOC_CTX *ctx, void *out, CONF_SECTION *cs, * the data pointer directly. */ } else { - CONF_PAIR *next; - cf_parse_t func = cf_pair_parse_value; + CONF_PAIR *next; + int ret; + cf_parse_t func = cf_pair_parse_value; cp = cf_pair_find(cs, rule->name); if (!cp) { @@ -648,13 +654,16 @@ static int cf_pair_parse_internal(TALLOC_CTX *ctx, void *out, CONF_SECTION *cs, if (deprecated) goto deprecated; if (rule->func) { - func = rule->func; cf_log_debug(cs, "%.*s%s = %s", PAIR_SPACE(cs), parse_spaces, cf_pair_attr(cp), cp->value); + func = rule->func; } - if (func(ctx, out, cf_pair_to_item(cp), rule) < 0) { + + ret = func(ctx, out, cf_pair_to_item(cp), rule); + if (ret < 0) { talloc_free(dflt_cp); return -1; } + cp->parsed = true; } /*