diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2023-02-27 23:18:52 +1100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2023-03-01 17:55:35 +1100 |
commit | fd68bb8c56587114fa6eeed39c36c4b347a6a5fc (patch) | |
tree | 6f70106ddda74fab125f50471f489690e192180a /dtc.h | |
parent | 4718189c4ca83ddaa38a4990bddd1d4196b11933 (diff) | |
download | device-tree-compiler-fd68bb8c56587114fa6eeed39c36c4b347a6a5fc.tar.gz |
Make name_node() xstrdup its name argument
The name field of 'struct node' was really always supposed to be a
malloc()ed string, that is owned by the structure. To avoid an extra
strdup() for strings coming up from the lexer, name_node() expects to take
uch an already malloc()ed string, which means it's not correct to pass it
a static string literal.
That's a pretty non-obvious constraint, so a bunch of incorrect uses have
crept in. Really, avoiding the extra dup from the lexer isn't a big enough
benefit for this demonstrably dangerous interface. So change it to do the
xstrdup() itself, removing the burden from callers.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'dtc.h')
-rw-r--r-- | dtc.h | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -269,7 +269,7 @@ struct property *reverse_properties(struct property *first); struct node *build_node(struct property *proplist, struct node *children, struct srcpos *srcpos); struct node *build_node_delete(struct srcpos *srcpos); -struct node *name_node(struct node *node, char *name); +struct node *name_node(struct node *node, const char *name); struct node *omit_node_if_unused(struct node *node); struct node *reference_node(struct node *node); struct node *chain_node(struct node *first, struct node *list); @@ -336,9 +336,9 @@ struct dt_info *build_dt_info(unsigned int dtsflags, struct reserve_info *reservelist, struct node *tree, uint32_t boot_cpuid_phys); void sort_tree(struct dt_info *dti); -void generate_label_tree(struct dt_info *dti, char *name, bool allocph); -void generate_fixups_tree(struct dt_info *dti, char *name); -void generate_local_fixups_tree(struct dt_info *dti, char *name); +void generate_label_tree(struct dt_info *dti, const char *name, bool allocph); +void generate_fixups_tree(struct dt_info *dti, const char *name); +void generate_local_fixups_tree(struct dt_info *dti, const char *name); /* Checks */ |