summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2023-02-06 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2023-02-06 08:00:00 +0000
commitad5ec9706b6485223ae9e96b6dfda9fff1c333bf (patch)
tree21b8ee7123d8535ab8777dc47051e1a13c945c7f
parent50d490f54b69c275ac26a86a3629433c786942fe (diff)
downloadstrace-ad5ec9706b6485223ae9e96b6dfda9fff1c333bf.tar.gz
ucopy: fix umovestr return value when the string crosses page boundaries
* src/ucopy.c (umovestr): When the string crosses page boundaries, take the length on each page into account. Resolves: https://github.com/strace/strace/issues/217
-rw-r--r--src/ucopy.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/ucopy.c b/src/ucopy.c
index c769a1916..c039feedf 100644
--- a/src/ucopy.c
+++ b/src/ucopy.c
@@ -432,7 +432,7 @@ umovestr(struct tcb *const tcp, kernel_ulong_t addr, unsigned int len,
char *nul_addr = memchr(laddr, '\0', r);
if (nul_addr)
- return (nul_addr - laddr) + 1;
+ return nread + (nul_addr - laddr) + 1;
addr += r;
laddr += r;
nread += r;