aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/target/semihosting_common.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/target/semihosting_common.c b/src/target/semihosting_common.c
index 2df6e38..0a60eb1 100644
--- a/src/target/semihosting_common.c
+++ b/src/target/semihosting_common.c
@@ -877,9 +877,11 @@ int semihosting_common(struct target *target)
semihosting->result = -1;
semihosting->sys_errno = ENOMEM;
} else {
- strncpy((char *)fn, semihosting->basedir, basedir_len);
- if (fn[basedir_len - 1] != '/')
- fn[basedir_len++] = '/';
+ if (basedir_len > 0) {
+ strcpy((char *)fn, semihosting->basedir);
+ if (fn[basedir_len - 1] != '/')
+ fn[basedir_len++] = '/';
+ }
retval = target_read_memory(target, addr, 1, len, fn + basedir_len);
if (retval != ERROR_OK) {
free(fn);