Я хотел бы прочитать строку из входного файла (который может или не был изменен пользователем). Я хотел бы рассматривать эту строку как директиву формата, которую нужно вызывать с фиксированным числом аргументов. Тем не менее, я понимаю, что некоторые директивы формата (в частности, ~/
приходят на ум) потенциально могут быть использованы для ввода вызовов функций, делая этот подход по своей сути небезопасным.Безопасная формулировка директив формата в Common Lisp
read
При использовании для синтаксического анализа данных в Common Lisp, язык обеспечивает *read-eval*
динамическую переменную, которая может быть установлен в nil
, чтобы отключить #.
инъекции кода. Я ищу что-то подобное, которое предотвратило бы инъекцию кода и вызовы произвольных функций внутри директив формата.
Спасибо. Я даже не думал о бесконечных проблемах с циклом. С такими проблемами я, вероятно, в конечном итоге напишу свой собственный микроязык для спецификаторов формата, а не пытаюсь настроить «формат». –
@SilvioMayolo Это тоже хороший подход. Но найдите время, чтобы узнать, существуют ли другие форматы: я думаю о 'cl-interpol', но могут быть и другие. Удачи! – coredump
Очень хороший момент о конструкциях итераций! –