Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Igor Plekhov                         2:5020/400     27 Oct 2004  02:29:06
 To : Zahar Kiselev
 Subject : Re: неисполняемый стэк в 2.4 ?
 -------------------------------------------------------------------------------- 
 
 On Tue, 26 Oct 2004 14:14:34 +0400, Zahar Kiselev
 <Zahar.Kiselev@p1.f382.n5030.z2.fidonet.org> wrote:
 
 > 
 >  >>  А кто сказал, что буфер в программе обязательно надо объявлять как
 >  >>  автоматическую переменную? Я бы даже сказал, что более традиционно 
 >  >> размещать буферы при помощи malloc. 
 >   IP> те, от переполнения которых якобы защищает неисполняемый стек,
 >   IP> размещаются в стеке.
 >  Стэк - это такой же сегмент как и все прочие. Если реализовать(вернее -
 >  задействовать) возможность установки прав на сегменты, а заодно и проверку
 >  границ сегментов - то защищенность(прежде всего от ошибок в программах)
 >  повысится.
 
 стек -- единственный и неповторимый.  в нём содержатся автоматические
 переменные, и адреса возврата из функций.  а других сегментов данных
 может быть много.  преимущество использования стека -- в простоте. 
 если под автоматические переменные выделять отдельные сегменты, то
 придётся отслеживать, какие сегменты заняты, какие свободны.
 
 защита от переполнения стека и некоторого сегмента данных имеет
 разный смысл.  если переполнился стек, то его надо расширить (вроде
 так и делается в Линуксе ?).  если переполнился сегмент данных, то
 это ошибка в программе.
 
 >  Можно добавить директиву #pragma к тем что уже имеются в gcc.
 >  А можно сделать внешнюю переменую, объявленную в libc и доступную из любого
 >  места в программе - влияющую на поведение функции malloc - при одном значении
 >  malloc будет создавать массив в отдельном сегменте, при другом - в общем
 >  сегменте "кучи". Конечно и то и другое требует небольшой модификации кода
 >  программ, которые захотят этим механизмом пользоваться. Hо ничего сложного я 
 > в этом не вижу.
 
 >  С одной стороны - не так уж много программ, использующих восемь тысяч
 >  переменных. Имеется в виду не _один_ массив, а 8к, а именно восемь тысяч
 >  _отдельных_ именованых переменных. Так что можно и наделать сегментов.
 > 
 >  С другой стороны - изложенный выше способ лучше так как позволяет
 > программисту управлять размещением переменных.
 
 да, такое было бы приятно иметь...
 
 -- 
 Registered Linux User #124759
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: неисполняемый стэк в 2.4 ?   Kirill Frolov   21 Oct 2004 09:02:38 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   25 Oct 2004 02:10:48 
 Re: неисполняемый стэк в 2.4 ?   Igor Plekhov   25 Oct 2004 15:11:09 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   25 Oct 2004 18:57:00 
 Re: неисполняемый стэк в 2.4 ?   Igor Plekhov   26 Oct 2004 03:10:34 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   26 Oct 2004 09:54:40 
 Re: неисполняемый стэк в 2.4 ?   Igor Plekhov   26 Oct 2004 12:00:06 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   26 Oct 2004 15:14:34 
 Re: неисполняемый стэк в 2.4 ?   Igor Plekhov   27 Oct 2004 02:29:06 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   26 Oct 2004 17:41:47 
 Re: неисполняемый стэк в 2.4 ?   Igor Plekhov   27 Oct 2004 02:07:36 
 Re: неисполняемый стэк в 2.4 ?   Victor Wagner   26 Oct 2004 19:23:38 
Архивное /ru.linux/6577e9f9378f.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional