Next: , Previous: , Up: Functions   [Contents][Index]


12.15 Determining whether a Function is Safe to Call

SESのようないくつかのメジャーモードは、ユーザーファイル内に格納された関数を呼び出します(See (ses)Top, for more information on SESを参照してください)。 ユーザーファイルには素性があやふやな場合があります — 初対面の人から受け取ったスプレッドシートかもしれず、会ったことのない誰かから受け取ったeメールかもしれません。そのため、ユーザーファイルに格納されたソースコードの関数を呼び出すのは、それが安全だと決定されるすまでは危険です。

Function: unsafep form &optional unsafep-vars

form安全(safe)なLisp式の場合はnil、危険な場合はなぜその式が危険かもしれないのか説明するリストをreturnします。引数unsafep-varsは、この時点で一時的なバインドだと判っているシンボルのリストです。これは主に内部的な再帰呼び出しで使用されます。カレントバッファーは暗黙の引数になり、これはバッファーローカルなバインディングのリストを提供します。

高速かつシンプルにするために、unsafepは、とても軽量な分析を行うので、実際には安全な多くのLisp式を拒絶します。安全ではない式にたいして、unsafepnilをreturnするケースは確認されていません。しかし“安全”なLisp式はdisplayプロパティーと一緒に文字列をreturnでき、これはその文字列がバッファーに挿入された後に実行される、割り当てられたLisp式を含みます。割り当てられた式は、ウィルスかもしれません。安全であるためには、バッファーへ挿入する前に、ユーザーコードにより計算されたすべての文字列からプロパティーを削除しなければなりません。