Module: wine Branch: master Commit: e7728c413298025077054187d57e6a7783b3de38 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e7728c413298025077054187d5...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Sep 21 21:01:43 2011 +0200
server: Try writing to /proc/<pid>/mem in write_process_memory().
---
server/ptrace.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/server/ptrace.c b/server/ptrace.c index 51157ab..6c14481 100644 --- a/server/ptrace.c +++ b/server/ptrace.c @@ -463,6 +463,25 @@ int write_process_memory( struct process *process, client_ptr_t ptr, data_size_t set_error( STATUS_ACCESS_DENIED ); goto done; } + + if (len > 3) + { + char procmem[24]; + int fd; + + sprintf( procmem, "/proc/%u/mem", process->unix_pid ); + if ((fd = open( procmem, O_WRONLY )) != -1) + { + ssize_t r = pwrite( fd, src, size, ptr ); + close( fd ); + if (r == size) + { + ret = 1; + goto done; + } + } + } + /* first word is special */ if (len > 1) {