Spec-Zone.ru › Elisp

Определение безопасности вызова функции

Некоторые основные режимы, такие как SES, вызывают функции, хранящиеся в пользовательских файлах. (См. (ses)Простой электронный табличный редактор Emacs для получения дополнительной информации о SES.) Пользовательские файлы иногда имеют сомнительное происхождение — вы можете получить электронную таблицу от только что встреченного человека или получить её по электронной почте от незнакомого человека. Поэтому рискованно вызывать функцию, исходный код которой хранится в пользовательском файле, пока вы не определите, что она безопасна.

Функция: unsafep форма & необязательно unsafep-переменные

Возвращает nil если форма — это безопасное выражение Lisp, или возвращает список, описывающий, почему оно может быть небезопасным. Аргумент unsafep-переменные — это список символов, известных как имеющие временные привязки на данный момент; он в основном используется для внутренних рекурсивных вызовов. Текущий буфер является неявным аргументом, который предоставляет список привязок, локальных для буфера.

Быстрое и простое unsafep выполняет очень лёгкий анализ и отклоняет многие выражения Lisp, которые на самом деле безопасны. Нет известных случаев, когда unsafep возвращает nil для небезопасного выражения. Однако безопасное выражение Lisp может вернуть строку со свойством display, содержащим связанное выражение Lisp, которое должно быть выполнено после вставки строки в буфер. Это связанное выражение может быть вирусом. Для обеспечения безопасности необходимо удалить свойства из всех строк, рассчитанных пользовательским кодом, перед их вставкой в буферы.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Function-Safety.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API