[PATCH 1/5] server: Try writing to /proc/<pid>/mem in write_process_memory().

Henri Verbeet hverbeet at codeweavers.com
Wed Sep 21 14:01:43 CDT 2011


Recent Linux versions support writable /proc/<pid>/mem.
---
 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)
         {
-- 
1.7.3.4




More information about the wine-patches mailing list