diff options
author | Dmitry V. Levin <ldv@strace.io> | 2023-02-06 08:00:00 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2023-02-06 08:00:00 +0000 |
commit | ad5ec9706b6485223ae9e96b6dfda9fff1c333bf (patch) | |
tree | 21b8ee7123d8535ab8777dc47051e1a13c945c7f | |
parent | 50d490f54b69c275ac26a86a3629433c786942fe (diff) | |
download | strace-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.c | 2 |
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; |