diff --git a/src/barebox-state.c b/src/barebox-state.c index 68ec60d..748a5b4 100644 --- a/src/barebox-state.c +++ b/src/barebox-state.c @@ -470,8 +470,8 @@ } if (string->value) - ret = of_set_property(node, "value", string->raw, - strlen(string->raw) + 1, 1); + ret = of_set_property(node, "value", string->value, + strlen(string->value) + 1, 1); return ret; } @@ -482,7 +482,7 @@ size_t len; len = strlen(src); - if (len >= string->var.size) + if (len > string->var.size) return -EILSEQ; /* copy string and clear remaining contents of buffer */ @@ -503,7 +503,7 @@ of_property_read_string(node, "default", &string->value_default); if (string->value_default) { len = strlen(string->value_default); - if (len >= string->var.size) + if (len > string->var.size) return -EILSEQ; } @@ -536,7 +536,7 @@ free(string->value); if (string->raw[0]) - string->value = xstrdup(string->raw); + string->value = xstrndup(string->raw, string->var.size); else string->value = xstrdup("");