Hi,
there is a small typo in the example code of the man page of
"process_vm_readv"
(http://man7.org/linux/man-pages/man2/process_vm_readv.2.html):
#include <sys/uio.h>
int
main(void)
{
struct iovec local[2];
struct iovec remote[1];
char buf1[10];
char buf2[10];
ssize_t nread;
pid_t pid = 10; /* PID of remote process */
local[0].iov_base = buf1;
local[0].iov_len = 10;
local[1].iov_base = buf2;
local[1].iov_len = 10;
remote[0].iov_base = (void *) 0x10000;
remote[1].iov_len = 20; /**** <---- TYPO: 1 --> 0 ****/
nread = process_vm_readv(pid, local, 2, remote, 1, 0);
if (nread != 20)
return 1;
else
return 0;
}
There is no two objects in "remote"-array so program corrupts other
variables memory.
Please change
remote[1].iov_len = 20;
to
remote[0].iov_len = 20;
Thank you!
- Ville Ylenius
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html