From: Arran Cudbard-Bell Date: Thu, 12 Dec 2019 18:04:50 +0000 (+0700) Subject: strdup filename in more places X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da869a854d76f9e8e820e2eac45ce763df6239d2;p=thirdparty%2Ffreeradius-server.git strdup filename in more places --- diff --git a/src/lib/server/cf_file.c b/src/lib/server/cf_file.c index eb4ab1ccb67..f69a2da9859 100644 --- a/src/lib/server/cf_file.c +++ b/src/lib/server/cf_file.c @@ -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; diff --git a/src/lib/server/cf_util.c b/src/lib/server/cf_util.c index ff704417b1e..857f480850a 100644 --- a/src/lib/server/cf_util.c +++ b/src/lib/server/cf_util.c @@ -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;