From 4a9725bb74e7a05731eff0b9166c4d1e99b7064d Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 2 Jul 2013 10:36:47 +0800 Subject: [PATCH] config/powerpc-nvram: Don't require petitboot, prefix on all params Currently, we only store nvram params with a "petitboot," prefix, so that we don't grow the config list to an unbound size. However, the "auto-boot?" param has no prefix. Instead, remove the requirement for the "petitboot," prefix, and use an array of known parameters instead. Signed-off-by: Jeremy Kerr --- lib/pb-config/storage-powerpc-nvram.c | 29 +++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/pb-config/storage-powerpc-nvram.c b/lib/pb-config/storage-powerpc-nvram.c index 4e4d29a..96d279c 100644 --- a/lib/pb-config/storage-powerpc-nvram.c +++ b/lib/pb-config/storage-powerpc-nvram.c @@ -12,7 +12,6 @@ #include "storage.h" static const char *partition = "common"; -static const char *prefix = "petitboot,"; struct param { char *name; @@ -26,12 +25,33 @@ struct powerpc_nvram_storage { struct list params; }; +static const char *known_params[] = { + "auto-boot?", + "petitboot,network", + NULL, +}; + #define to_powerpc_nvram_storage(s) \ container_of(s, struct powerpc_nvram_storage, storage) /* a partition max a max size of 64k * 16bytes = 1M */ static const int max_partition_size = 64 * 1024 * 16; +static bool param_is_known(const char *param, unsigned int len) +{ + const char *known_param; + unsigned int i; + + for (i = 0; known_params[i]; i++) { + known_param = known_params[i]; + if (len == strlen(known_param) && + !strncmp(param, known_param, len)) + return true; + } + + return false; +} + static int parse_nvram_params(struct powerpc_nvram_storage *nv, char *buf, int len) { @@ -70,13 +90,10 @@ static int parse_nvram_params(struct powerpc_nvram_storage *nv, continue; namelen = name - value; - if (namelen <= strlen(prefix)) - continue; - if (strncmp(name, prefix, strlen(prefix))) + if (!param_is_known(name, namelen)) continue; - name += strlen(prefix); value++; param = talloc(nv, struct param); @@ -249,7 +266,7 @@ static void populate_network_config(struct powerpc_nvram_storage *nv, char *val; int i; - cval = get_param(nv, "network"); + cval = get_param(nv, "petitboot,network"); if (!cval || !strlen(cval)) return; -- 2.39.2