2.11.2.2 安全/危険なエンコード名

TPMBENCで指定する安全または危険なエンコード名という考えは、これらのエンコードのマルチバイト文字データにNULLが埋め込まれているかどうかで決まります。_mbspresend()関数はstrlen()を使用してデータの長さを決めるので、NULLが埋め込まれていると、データの長さが不適切になり、誤ったデータ・バイト数が送られてしまいます。

sendlen0_unsafe_tpmbencのデフォルト・リストには、NULLが埋め込まれている可能性がある(便宜上、大文字および小文字の)マルチバイトUnicodeエンコード名があります。アプリケーション管理またはパフォーマンスを考慮すると、このリストを変更する必要があります。

  • ファイルがあっても空の場合は、MBSTRING自己記述処理ですべてのエンコード名が安全なものとみなされます。
  • ファイルがない場合は、MBSTRING自己記述処理ですべてのエンコード名が危険なものとみなされます(tperrnoTPEINVALになります)。
  • ファイルがあり、名前のリストを格納している場合は、このファイルが(_mbsinit()で)一度読み取られ、Tuxedoの内部にリストが格納されます。mbsinit()の実行中に、格納されているリストとTPMBENC名が比較され、バッファが安全または危険に設定されます。_mbspresend()が呼び出され(sendlen引数がゼロに設定されている状態)、バッファが安全とマークされると、データの長さはTuxedoの内部で設定されます。