poprawka na ptrace dla 2.4.x - chyba w końcu dobra

Jakub Bogusz qboosh w pld.org.pl
Wto, 22 Kwi 2003, 14:27:08 CEST


Chyba w końcu udało się skompletować dobrą poprawkę - na podstawie
ostatnich wątków na temat zepsutego patcha na LKML - przede wszystkim
http://marc.theaimsgroup.com/?l=linux-kernel&m=105098797717096&w=2


Zmiany w stosunku do oryginalnego patcha Alana wyglądają tak:

--- linux-2.4.20-ptrace-hole.patch      18 Mar 2003 11:58:21 -0000      1.1.2.2
+++ linux-2.4.20-ptrace-hole.patch      22 Apr 2003 09:48:45 -0000      1.1.2.4
@@ -452,7 +452,7 @@
  #define DEF_NICE      (0)


-+#define is_dumpable(tsk)      ((tsk)->task_dumpable && (tsk)->mm->dumpable)
++#define is_dumpable(tsk)      ((tsk)->task_dumpable && (tsk)->mm && (tsk)->mm->dumpable)
 +
  /*
   * The default (Linux) execution domain.
@@ -517,7 +517,7 @@
  int ptrace_check_attach(struct task_struct *child, int kill)
  {
 +      mb();
-+      if (!is_dumpable(child))
++      if (!child->task_dumpable)
 +              return -EPERM;
 +
        if (!(child->ptrace & PT_PTRACED))
@@ -536,7 +536,7 @@
        /* Worry about races with exit() */
        task_lock(tsk);
        mm = tsk->mm;
-+      if (!is_dumpable(tsk) || (&init_mm == mm))
++      if (!tsk->task_dumpable || (&init_mm == mm))
 +              mm = NULL;
        if (mm)
                atomic_inc(&mm->mm_users);

Zaaplikowałem takie coś na pochodną 2.4.18-6 - system działa, widać linię
poleceń (/proc/PID/cmdline) wszystkich normalnych procesów, da się
śledzić demony itd. Jak na razie nie zauważyłem problemów.

Programik o nazwie ptrace-kmod oczywiście nie działa ;)


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-kernel