名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int bsltos(const m_label_t *label, char **string, const int str_len, const int flags);
int bcleartos(const m_label_t *label, char **string, const int str_len, const int flags);
bsltos() および bcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらのルーチンは、バイナリラベルを文字列に変換します。この文字列は flags パラメータの値によって制御されます。
出力される文字コード形式のラベルの汎用形式は次のとおりです。
CLASSIFICATION WORD1 WORD2 WORD3/WORD4 SUFFIX PREFIX WORD5/WORD6 |
CLASSIFICATION 名と WORD は大文字で表示します。格付け (Classifications) と Word は、文字コード形式のラベルにあるほかの Word と「 」(空白文字) で区分されます。ただし、同じ PREFIX または SUFFIX を要求する複数の Word が存在する場合は例外です。この場合は、Word と Word の間は「/」(スラッシュ) で区切ります。
string は、事前に割り当てられたメモリーへのポインタ、値 (char *)0 のうち、いずれかを指します。事前に割り当てられたメモリーへのポインタを指す場合は、str_len で、メモリーのサイズを示します。値 (char *)0 を指す場合は、変換された文字コード形式のラベルを含むように、malloc() を使ってメモリーが割り当てられます。変換された label は、割り当てられた (または事前に割り当てられた) メモリーにコピーされます。
flags は 0 (ゼロ)、または次の論理和になります。
label に定義されている Word の長形式名を使って変換します。
label に定義されている Word の短形式名を使って変換します。label_encodings ファイルの中に Word の短形式名が定義されていない場合は、長形式名が使用されます。
label に定義されている格付けの長形式名を使って変換します。
label に定義されている格付けの短形式名を使って変換します。
情報ラベル label に定義されている「アクセス関連の」エントリだけを変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを、label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換します。文字列が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
label に定義されている格付けは変換されません。
bsltos() は、バイナリ機密ラベルを文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、 VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。
bcleartos() は、バイナリ許可上限を文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、別々の label_encodings ファイルテーブルを使用します。それぞれのテーブルに含まれる Word と制約条件は異なっている場合があります。
これらのルーチンは次の値を返します。
ラベルのタイプが、有効な定義された必須のものでない場合、プロセスの機密ラベルがラベルより優位でなく、プロセスの有効な特権セットの中に PRIV_SYS_TRANS_LABEL がない場合、または label_encodings ファイルにアクセス不能な場合。
戻り文字列にメモリーを割り当てられない場合、または事前に割り当てられた戻り文字列のメモリーに文字列が収まらない場合。事前に割り当てられた文字列の値は NULL 文字列に設定されます ( *string[0]='\00';)。
成功の場合、NULL ターミネータを含む文字コード形式のラベルの長さが表示されます。
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されていない場合、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセスの属性フラグによって制御されます。ラベル表示プロセスの属性フラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって制御されます。External の値は、ADMIN_LOW ラベルとADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられることを指定します。Internal の値は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されることを指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらのルーチンでメモリーを割り当てている場合は、使用しなくなったメモリーは、呼び出し元で free() を使って解放します。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項