Является ли это ожидаемым поведением?
blockquote>Глядя на код ядра Linux, я думаю, что внутреннее имя ядра для этого флага «read подразумевает exec». Итак, да, я думаю, что это ожидается.
Кажется, что плохая идея требовать, чтобы стек исполнялся, чтобы сделать исполняемый файл кучи, поскольку существует много более законных вариантов использования последнее, чем первое.
blockquote>Зачем вам нужна полная куча для выполнения? Если вам действительно нужно динамически генерировать машинный код и запускать его или так, вы можете явно выделить исполняемую память с помощью
mmap
syscall., что является обоснованием?
blockquote>Я думаю, что идея состоит в том, что этот флаг можно использовать для устаревших программ, которые ожидают, что все, что доступно для чтения, также является исполняемым. Эти программы могут пытаться запустить материал в стеке, и они могут попытаться запустить материал в куче, поэтому все это разрешено.