GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Function-Safety.html ・ emacs-doc.conao3.com

13.17 関数が安全に呼び出せるかの判定

SESなどの主要なモードの中には、ユーザーファイルに保存されている関数を呼び出すものがあります。(SESの詳細については、Simple Emacs Spreadsheetを参照してください。)ユーザーファイルは出所が不透明な場合があります。会ったばかりの人からスプレッドシートを入手することもあれば、一度も会ったことのない人からメールで入手することもあります。そのため、安全であると判断できるまで、ユーザーファイルにソースコードが保存されている関数を呼び出すのはリスクを伴います。

関数: unsafep form &optional unsafep-vars

form が 安全な Lisp 式である場合は nil を返し、安全ではない可能性がある理由を説明するリストを返します。引数 unsafep-vars は、この時点で一時的な束縛があることが分かっているシンボルのリストであり、主に内部的な再帰呼び出しで使用されます。現在のバッファは暗黙的な引数であり、バッファローカルな束縛のリストを提供します。

unsafepは高速かつシンプルであるため、非常に簡易的な解析しか行わず、実際には安全な多くのLisp式を却下します。安全でない式に対してunsafepがnilを返す既知の事例はありません。しかし、安全なLisp式であっても、displayプロパティを持つ文字列を返すことがあり、そのプロパティには、文字列がバッファに挿入された後に実行される関連付けられたLisp式が含まれています。この関連付けられた式は悪意のあるものである可能性があります。安全性を確保するには、ユーザーコードによって算出されたすべての文字列をバッファに挿入する前に、プロパティを削除する必要があります。