summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Felsch <m.felsch@pengutronix.de>2019-10-30 18:03:39 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2019-11-04 10:38:52 +0100
commit3b81d1199347b2fd250d72bb4df39e15f975b6ed (patch)
treed1ccbb8c3fea90931bf2c80992ed576ca1b9dcb5
parent5c06691a321c9f0d9e143c52b143366d0428391b (diff)
downloadbarebox-3b81d1199347b2fd250d72bb4df39e15f975b6ed.tar.gz
barebox-3b81d1199347b2fd250d72bb4df39e15f975b6ed.tar.xz
parameter: strip leading and trailing whitespaces
My initial bug was the following: I set the global.boot.default="boot1 boot2 " and executed the 'boot' command. If both targets are not bootable barebox starts to execute the boot scripts found under /env/boot. This is because of the command/boot.c implementation and the leading whitespace. Without the whitespace only the two desired boot targets are tried. IMHO leading and trailing whitespaces are error-prone in many cases. If someone wants to concatenate strings he/she should add spaces on purpose. So I fixed the bug above globally by always stripping leading and trailing whitespaces. Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--lib/parameter.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/parameter.c b/lib/parameter.c
index 00e9a9ff4e..fdbb2e71d1 100644
--- a/lib/parameter.c
+++ b/lib/parameter.c
@@ -253,11 +253,14 @@ static int param_string_set(struct device_d *dev, struct param_d *p, const char
struct param_string *ps = to_param_string(p);
int ret;
char *value_save = *ps->value;
+ char *value_new;
if (!val)
val = "";
- *ps->value = xstrdup(val);
+ value_new = xstrdup(val);
+ value_new = strim(value_new);
+ *ps->value = value_new;
if (!ps->set)
return 0;