env: Use memcpy() instead of ad-hoc code to copy variable value

Copy the value of the found variable into given buffer with memcpy()
instead of ad-hoc code.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Marek Behún 2021-10-17 17:36:36 +02:00 committed by Simon Glass
parent 3112ce0ce8
commit a473766cce

View file

@ -735,7 +735,7 @@ int env_get_f(const char *name, char *buf, unsigned len)
for (p = env; *p != '\0'; p = end + 1) {
const char *value;
int n, res;
unsigned res;
for (end = p; *end != '\0'; ++end)
if (end - env >= CONFIG_ENV_SIZE)
@ -746,20 +746,14 @@ int env_get_f(const char *name, char *buf, unsigned len)
continue;
res = end - value;
memcpy(buf, value, min(len, res + 1));
/* found; copy out */
for (n = 0; n < len; ++n, ++buf) {
*buf = *value++;
if (*buf == '\0')
return res;
if (len <= res) {
buf[len - 1] = '\0';
printf("env_buf [%u bytes] too small for value of \"%s\"\n",
len, name);
}
if (n)
*--buf = '\0';
printf("env_buf [%u bytes] too small for value of \"%s\"\n",
len, name);
return res;
}