]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
strdup filename in more places
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 12 Dec 2019 18:04:50 +0000 (01:04 +0700)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 12 Dec 2019 18:05:04 +0000 (01:05 +0700)
src/lib/server/cf_file.c
src/lib/server/cf_util.c

index eb4ab1ccb672615eac0878c48f794bb6ca8f4b30..f69a2da98592950b86629f7038a7a4388657e88a 100644 (file)
@@ -287,8 +287,8 @@ char const *cf_expand_variables(char const *cf, int lineno,
                                        return NULL;
                                }
 
-                               subcs->item.filename = ci->filename;
-                               subcs->item.lineno = ci->lineno;
+                               cf_filename_set(subcs, ci->filename);
+                               cf_lineno_set(subcs, ci->lineno);
                                cf_item_add(outer_cs, &(subcs->item));
 
                                ptr = next + 1;
@@ -402,9 +402,8 @@ static bool cf_template_merge(CONF_SECTION *cs, CONF_SECTION const *template)
                        cp2 = cf_pair_dup(cs, cp1);
                        if (!cp2) return false;
 
-                       cp2->item.filename = cp1->item.filename;
-                       cp2->item.lineno = cp1->item.lineno;
-
+                       cf_filename_set(cp2, cp1->item.filename);
+                       cf_lineno_set(cp2, cp1->item.lineno);
                        cf_item_add(cs, &(cp2->item));
                        continue;
                }
@@ -436,9 +435,8 @@ static bool cf_template_merge(CONF_SECTION *cs, CONF_SECTION const *template)
                                                false);
                        if (!subcs2) return false;
 
-                       subcs2->item.filename = subcs1->item.filename;
-                       subcs2->item.lineno = subcs1->item.lineno;
-
+                       cf_filename_set(subcs2, subcs1->item.filename);
+                       cf_lineno_set(subcs2, subcs1->item.lineno);
                        cf_item_add(cs, &(subcs2->item));
                        continue;
                }
@@ -515,7 +513,7 @@ static int cf_file_open(CONF_SECTION *cs, char const *filename, bool from_dir, F
 
        MEM(file = talloc(tree, cf_file_t));
 
-       file->filename = filename;
+       file->filename = talloc_strdup(file, filename); /* The rest of the code expects this to be a talloced buffer */
        file->cs = cs;
        file->from_dir = from_dir;
 
@@ -570,7 +568,7 @@ bool cf_file_check(CONF_SECTION *cs, char const *filename, bool check_perms)
        file = talloc(tree, cf_file_t);
        if (!file) return false;
 
-       file->filename = filename;
+       file->filename = talloc_strdup(file, filename); /* The rest of the code expects this to be talloced */
        file->cs = cs;
 
        if (!check_perms) {
@@ -1092,8 +1090,8 @@ static CONF_SECTION *process_if(cf_stack_t *stack)
                cf_log_err(parent, "Failed allocating memory for section");
                return NULL;
        }
-       cs->item.filename = frame->filename;
-       cs->item.lineno = frame->lineno;
+       cf_filename_set(cs, frame->filename);
+       cf_lineno_set(cs, frame->lineno);
 
        /*
         *      Skip (...) to find the {
@@ -1270,8 +1268,8 @@ alloc_section:
                      frame->filename, frame->lineno);
                return NULL;
        }
-       css->item.filename = frame->filename;
-       css->item.lineno = frame->lineno;
+       cf_filename_set(css, frame->filename);
+       cf_lineno_set(css, frame->lineno);
        css->name2_quote = T_BARE_WORD;
 
        css->argc = 0;
@@ -1328,8 +1326,8 @@ static int add_pair(CONF_SECTION *parent, char const *attr, char const *value,
 
        cp = cf_pair_alloc(parent, attr, value, op_token, name1_token, value_token);
        if (!cp) return -1;
-       cp->item.filename = filename;
-       cp->item.lineno = lineno;
+       cf_filename_set(cp, filename);
+       cf_lineno_set(cp, lineno);
        cp->pass2 = pass2;
        cf_item_add(parent, &(cp->item));
 
@@ -1488,8 +1486,8 @@ static int parse_input(cf_stack_t *stack)
                        return -1;
                }
 
-               css->item.filename = frame->filename;
-               css->item.lineno = frame->lineno;
+               cf_filename_set(css, frame->filename);
+               cf_lineno_set(css, frame->lineno);
                css->name2_quote = name2_token;
 
                /*
@@ -1954,7 +1952,7 @@ do_frame:
 
                /*
                 *      All of the file handling code is done.  Parse the input.
-                */             
+                */
                do {
                        fr_skip_whitespace(ptr);
                        if (!*ptr || (*ptr == '#')) break;
index ff704417b1e8abb8ee1a70a8dc8bd268b018a0fb..857f480850a559add03b09ab693c097fbac505fc 100644 (file)
@@ -870,8 +870,8 @@ CONF_SECTION *cf_section_dup(TALLOC_CTX *ctx, CONF_SECTION *parent, CONF_SECTION
                new->depth = cs->depth;
        }
 
-       new->item.lineno = cs->item.lineno;
-       new->item.filename = cs->item.filename;
+       cf_filename_set(new, cs->item.filename);
+       cf_lineno_set(new, cs->item.lineno);
 
        fr_cursor_copy(&cursor, &cs->item.cursor);      /* Mutable cursor */
        for (ci = fr_cursor_head(&cursor);
@@ -1128,7 +1128,7 @@ CONF_PAIR *cf_pair_alloc(CONF_SECTION *parent, char const *attr, char const *val
        cp->lhs_quote = lhs_quote;
        cp->rhs_quote = rhs_quote;
        cp->op = op;
-       cp->item.filename = "";         /* will be over-written if necessary */
+       cf_filename_set(cp, "");                /* will be over-written if necessary */
        fr_cursor_init(&cp->item.cursor, &cp->item.child);
 
        cp->attr = talloc_typed_strdup(cp, attr);
@@ -1161,13 +1161,12 @@ CONF_PAIR *cf_pair_dup(CONF_SECTION *parent, CONF_PAIR *cp)
        rad_assert(parent);
        rad_assert(cp);
 
-       new = cf_pair_alloc(parent, cp->attr, cf_pair_value(cp),
-                           cp->op, cp->lhs_quote, cp->rhs_quote);
+       new = cf_pair_alloc(parent, cp->attr, cf_pair_value(cp), cp->op, cp->lhs_quote, cp->rhs_quote);
        if (!new) return NULL;
 
        new->parsed = cp->parsed;
-       new->item.lineno = cp->item.lineno;
-       new->item.filename = cp->item.filename;
+       cf_lineno_set(new, cp->item.lineno);
+       cf_filename_set(new, cp->item.filename);
 
        return new;
 }
@@ -1561,9 +1560,8 @@ CONF_DATA const *_cf_data_add(CONF_ITEM *ci, void const *data, char const *name,
                return NULL;
        }
        cd->is_talloced = true;
-       cd->item.filename = filename;
-       cd->item.lineno = lineno;
-
+       cf_filename_set(cd, filename);
+       cf_lineno_set(cd, lineno);
        cf_item_add(ci, cd);
 
        return cd;
@@ -1607,9 +1605,8 @@ CONF_DATA const *_cf_data_add_static(CONF_ITEM *ci, void const *data, char const
                return NULL;
        }
        cd->is_talloced = false;
-       cd->item.filename = filename;
-       cd->item.lineno = lineno;
-
+       cf_filename_set(cd, filename);
+       cf_lineno_set(cd, lineno);
        cf_item_add(ci, cd);
 
        return cd;