]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
sbuff: Initialise temporary sbuffs with additional trailing byte when using strlen
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 23 Jul 2020 15:04:05 +0000 (11:04 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 23 Jul 2020 15:04:05 +0000 (11:04 -0400)
src/lib/server/tmpl.c
src/lib/util/dict_tokenize.c
src/lib/util/pair_legacy.c

index 5b8026ef825fc6a98095562a0da16a322fefb775..82426bddc9bf2bcce7b4b0de156e0a1fd140a2f3 100644 (file)
@@ -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;
index 10e729c8e868370ca39f3c2ad4728044c4cb10e4..cb40be48df075c5dcefb2b1248f9d057c0ec57d4 100644 (file)
@@ -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;
 
index fd659b608d3e4be4143aa81a815eb1e467231a45..b0f0f9272e38031e280415a4f4c2d023a83517c3 100644 (file)
@@ -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);