diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-10-01 12:42:57 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-10-01 12:52:00 +0800 |
commit | 55782f91e21dc8b9d296f13f0562670095042d1f (patch) | |
tree | 2423fcd09ab88a7105e6acae33406ca915201577 /discover/grub2/script.c | |
parent | 57293e2111fcba58a7b399cb1332012414bffeeb (diff) | |
download | talos-petitboot-55782f91e21dc8b9d296f13f0562670095042d1f.tar.gz talos-petitboot-55782f91e21dc8b9d296f13f0562670095042d1f.zip |
discover/grub2: strdup strings used in the environment
Use a copy of the name & value pairs that we pass to the environment, as
the data loaded from load_env will be talloc_free-ed.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/grub2/script.c')
-rw-r--r-- | discover/grub2/script.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/discover/grub2/script.c b/discover/grub2/script.c index 75b8aaa..2aaf1d3 100644 --- a/discover/grub2/script.c +++ b/discover/grub2/script.c @@ -23,8 +23,8 @@ container_of(stmt, struct grub2_statement_conditional, st) struct env_entry { - const char *name; - const char *value; + char *name; + char *value; struct list_item list; }; @@ -75,11 +75,13 @@ void script_env_set(struct grub2_script *script, if (!entry) { entry = talloc(script, struct env_entry); - entry->name = name; + entry->name = talloc_strdup(entry, name); list_add(&script->environment, &entry->list); + } else { + talloc_free(entry->value); } - entry->value = value; + entry->value = talloc_strdup(entry, value); } static bool expand_var(struct grub2_script *script, struct grub2_word *word) |