summaryrefslogtreecommitdiffstats
path: root/discover/grub2/script.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-10-01 12:42:57 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-10-01 12:52:00 +0800
commit55782f91e21dc8b9d296f13f0562670095042d1f (patch)
tree2423fcd09ab88a7105e6acae33406ca915201577 /discover/grub2/script.c
parent57293e2111fcba58a7b399cb1332012414bffeeb (diff)
downloadtalos-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.c10
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)
OpenPOWER on IntegriCloud