From: Arran Cudbard-Bell Date: Thu, 23 Jul 2020 15:04:05 +0000 (-0400) Subject: sbuff: Initialise temporary sbuffs with additional trailing byte when using strlen X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aaa7e64b177fab7c2e23bae2e0a42f405fc84b96;p=thirdparty%2Ffreeradius-server.git sbuff: Initialise temporary sbuffs with additional trailing byte when using strlen --- diff --git a/src/lib/server/tmpl.c b/src/lib/server/tmpl.c index 5b8026ef825..82426bddc9b 100644 --- a/src/lib/server/tmpl.c +++ b/src/lib/server/tmpl.c @@ -1354,7 +1354,7 @@ ssize_t tmpl_afrom_attr_substr(TALLOC_CTX *ctx, attr_ref_error_t *err, * parsing the configuration files. */ slen = fr_dict_attr_by_qualified_name_substr(NULL, &da, - rules->dict_def, &FR_SBUFF_TMP(p, strlen(p)), + rules->dict_def, &FR_SBUFF_TMP(p, strlen(p) + 1), !rules->disallow_internal); if (slen <= 0) { fr_dict_attr_t *unknown_da; diff --git a/src/lib/util/dict_tokenize.c b/src/lib/util/dict_tokenize.c index 10e729c8e86..cb40be48df0 100644 --- a/src/lib/util/dict_tokenize.c +++ b/src/lib/util/dict_tokenize.c @@ -687,7 +687,7 @@ static int dict_read_process_attribute(dict_tokenize_ctx_t *ctx, char **argv, in /* * Get / skip protocol name. */ - slen = dict_by_protocol_substr(NULL, &dict, &FR_SBUFF_TMP(ref, strlen(ref)), ctx->dict); + slen = dict_by_protocol_substr(NULL, &dict, &FR_SBUFF_TMP(ref, strlen(ref) + 1), ctx->dict); if (slen < 0) { talloc_free(ref); return -1; @@ -1508,7 +1508,8 @@ static int fr_dict_finalise(dict_tokenize_ctx_t *ctx) * Get / skip protocol name. */ slen = dict_by_protocol_substr(NULL, - &dict, &FR_SBUFF_TMP(this->ref, strlen(this->ref)), ctx->dict); + &dict, &FR_SBUFF_TMP(this->ref, strlen(this->ref) + 1), + ctx->dict); if (slen <= 0) { fr_dict_t *other; diff --git a/src/lib/util/pair_legacy.c b/src/lib/util/pair_legacy.c index fd659b608d3..b0f0f9272e3 100644 --- a/src/lib/util/pair_legacy.c +++ b/src/lib/util/pair_legacy.c @@ -416,7 +416,7 @@ static ssize_t fr_pair_list_afrom_substr(TALLOC_CTX *ctx, fr_dict_t const *dict, /* * Parse the name. */ - slen = fr_dict_attr_by_qualified_name_substr(NULL, &da, dict, &FR_SBUFF_TMP(p, strlen(p)), true); + slen = fr_dict_attr_by_qualified_name_substr(NULL, &da, dict, &FR_SBUFF_TMP(p, strlen(p) + 1), true); if (slen <= 0) { slen = fr_dict_unknown_afrom_oid_substr(ctx, &da_unknown, root, p);