LINUX.ORG.RU

Сообщения tentaclius

 

безопасное встраивание ficl

Hi all,

Хочу попробовать внедрить реализацию FORTH-а - ficl в одно приложение. Нравится в нем буквально все: простота embedding-а, гибкий синтаксис, который очень здорово можно пристроить в роли командного языка, однако есть одно но: ficl беспощадно падает при некорректной работе с адресами.

Т.е. например

0 1234 !

приведет к обвалу ficl-а и, соответственно, процесса, в котором этот ficl-интерпретатор вызывался.

Все логично, форт есть форт. Но выносить такие возможности на уровень пользовательских скриптов не хочется. Может кто подскажет, как наиболее адекватно можно (можно-ли) защитить программу от такого...

Что первое приходит на ум:

1. вынести форт в отдельный процесс, обмениваться с основным процессом сообщениями; позволить ему погибнуть при SIGSEGV, рестартовать по получении сигнала о гибели потомка, вроде как по модели Erlang; насколько я могу понять, подобным образом действует FTH - наследник FICL-а;

2. ограничить набор слов доступных пользователю определенным словарем, ограничивающим свободу самореализации;

1-ое выглядит не то чтобы очень трудоемко, но как-то громоздко, код изолирования ficl-а в отдельный процесс наверняка получится значительно больше собственно кода интеграции. 2-е решение кажется очень уж негибким и так-же не лишенным громоздкости, ибо предется оборачивать почти все стандартные слова.

Подскажите, кто сталкивался... наверняка есть способ проще.

tentaclius
()

RSS подписка на новые темы