Пример исходного кода из «Программирования ядра Linux»

читал книгу Роберта Лава, главу 5 о системных вызовах, и нашел этот простой пример немного сомнительным:

asmlinkage long sys_silly_copy(unsigned long *src, unsigned long *dst, unsigned long len)
{
   unsigned long buf;

   if (copy_from_user(&buf, src, len))
     return -EFAULT;

   ...
}

Как мы видим, 'buf' - это объект типа 'unsigned long', определенный в стеке ядра , т.е. его начальное значение скорее всего фигня. В любом случае, можно ли копировать байты len в стек, где находится buf, т.е. он может перезаписать что-нибудь полезное? Возможно, это подходит только для этого конкретного примера?

8
задан Mark 29 June 2011 в 02:43
поделиться