sandbox: Use memmove() to move overlapping regions

The use of strcpy() to remove characters at the start of a string is safe
in U-Boot, since we know the implementation. But in os.c we are using the
C library's strcpy() function, where this behaviour is not permitted.

Update the code to use memmove() instead.

Reported-by: Coverity (CID: 173279)
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
Simon Glass 2018-11-13 15:55:20 -07:00
parent 1180030d12
commit b847c14243

View File

@ -735,9 +735,10 @@ int os_find_u_boot(char *fname, int maxlen)
}
/* Look for 'u-boot' in the parent directory of spl/ */
p = strstr(fname, "/spl/");
p = strstr(fname, "spl/");
if (p) {
strcpy(p, p + 4);
/* Remove the "spl" characters */
memmove(p, p + 4, strlen(p + 4) + 1);
fd = os_open(fname, O_RDONLY);
if (fd >= 0) {
close(fd);