Я хочу запускать произвольные (потенциально опасные) двоичные файлы на своем сервере. Поэтому я использовал objcopy
, чтобы переименовать «главный» символ в «other_main», чтобы я мог связать свою небольшую основную функцию, которая устанавливает соответствующее значение для RLIMIT_CPU
и переключает _ 3_ перед вызовом other_main. Пока я вполне доволен этим решением.
Теперь проблема в том, что код сторонней программы может содержать некоторые вызовы malloc, которые могут мгновенно убить программу (sbrk не разрешен). Поэтому я хотел бы предварительно выделить массив разумного размера (например, 20 МБ) перед установкой SECCOMP
, который должен использоваться malloc / realloc / calloc / free. К сожалению, я не знаю, как заархивировать последний шаг. Должен ли я выполнять все эти 4 функции самостоятельно? Как я могу внедрить свои собственные функции в stdlib (например, что происходит, когда printf вызывает внутри себя malloc?).
sbrk
(который не может выйти из вашей песочницы), а затем malloc / realloc / calloc / free и друзья будут работать. - person Kevin Vermeer   schedule 14.07.2012main
может быть недостаточно - двоичный файл может содержать инициализаторы, которые выполняются доmain
. - person   schedule 14.07.2012