1

vim_latex ( http://vim-latex.sourceforge.net/ ) と呼ばれる latex_suite のコードを調べていたところ、「templates.vim」というファイルに興味深い行がいくつか見つかりました。

" Back-Door to trojans !!!
 function! <SID>Compute(what)
     exe a:what
     if exists('s:comTemp')
         return s:comTemp.s:comTemp
     else
         return ''
     endif
endfunction

私は vim コードの専門家ではないので、これらの行を解釈することはできません。何が起こっているのか分かりますか?

編集: 関数は次のものによってのみ呼び出されるようです:

" ProcessTemplate: processes the special characters in template file. {{{
"                  This implementation follows from Gergely Kontra's
"                  mu-template.vim
"                  http://vim.sourceforge.net/scripts/script.php?script_id=222
function! <SID>ProcessTemplate()
  if exists('s:phsTemp') && s:phsTemp != ''
    exec 'silent! %s/^'.s:comTemp.'\(\_.\{-}\)'.s:comTemp.'$/\=<SID>Compute(submatch(1))/ge'
    exec 'silent! %s/'.s:exeTemp.'\(.\{-}\)'.s:exeTemp.'/\=<SID>Exec(submatch(1))/ge'
    exec 'silent! g/'.s:comTemp.s:comTemp.'/d'  
    " A function only puts one item into the search history...
    call Tex_CleanSearchHistory()
  endif
endfunction

ヘッダー ファイルの説明によると、これらの関数の目的は、特定のディレクトリにあるテンプレートを処理することです。

4

1 に答える 1

1

コメントは警告として意図されていると思います。この関数<SID>ProcessTemplate()は、テンプレート ファイルを調べて、特定の (構成可能な) パターンを探し、テンプレートから抽出されたテキストを<SID>Compute(what)引数として呼び出します。what行に注意してください:exe a:what

信頼できないソースからテンプレート ファイルをインストールすると、問題が発生する可能性があります。

もちろん、信頼できないソースから vim プラグインをインストールすると、同様に悪いことが起こる可能性があります。マルウェアをテンプレート ファイルに入れると、いくつかのレベルの間接性が追加され、実装が難しくなり、診断が難しくなります。

このコードは、コマンドが vim に追加される前に作成され:sandboxた可能性があり、このコードをより安全にする簡単な方法である可能性があります。サンドボックスで何が許可されているかを見て、それをこのテンプレート処理の使用目的と比較していません。

于 2014-03-14T16:39:38.880 に答える