summaryrefslogtreecommitdiff
path: root/arch/sandbox/cpu/os.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2018-11-13 15:55:20 -0700
committerSimon Glass <sjg@chromium.org>2018-11-29 09:30:05 -0700
commitb847c1424318c6a0b7aab14e465d7e253b162d31 (patch)
treec9ec260d70d07f99e5bc96d4109d698c131db5bb /arch/sandbox/cpu/os.c
parent1180030d12e0c4f03522fa99f730e724845210fc (diff)
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>
Diffstat (limited to 'arch/sandbox/cpu/os.c')
-rw-r--r--arch/sandbox/cpu/os.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
index aa92694342..62e05c554a 100644
--- a/arch/sandbox/cpu/os.c
+++ b/arch/sandbox/cpu/os.c
@@ -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);