mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
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:
parent
3112ce0ce8
commit
a473766cce
1 changed files with 6 additions and 12 deletions
18
cmd/nvedit.c
18
cmd/nvedit.c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue