名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int stobsl(const char *string, m_label_t *label, const int flags, int *error);
int stobclear(const char *string, m_label_t *clearance, const int flags, int *error);
stobsl() および stobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
呼び出しプロセスは、プロセスの機密ラベルより優位にある文字形式のラベルについてラベル変換を実行するには、有効な特権セット内に PRIV_SYS_TRANS_LABEL を保持する必要があります。
stobl 関数は、文字形式のラベルをバイナリラベルに変換します。また、その既存の値を基準に、既存のバイナリラベルを増分または減分して新しいバイナリラベルを生成し、既存のバイナリラベルを変更します。
入力する文字形式のラベル文字列の汎用形式は次のとおりです。
[ + ] classification name ] [ [ + | - ] word ... |
語の前後のスペースは無視されます。フィールド間はスペース、「/」 (スラッシュ)、または「,」(カンマ) で区切ります。大文字と小文字は区別されません。string の先頭が + または - の場合、string は既存のラベルを変更したものと解釈されます。string の先頭が格付け名で、そのあとに + または - が続く場合は、新しい格付けが使用され、古いラベルの残りの部分は保管されて、string に指定されるように変更されます。+ は、Word を追加して既存のラベルを変更することを示します。- は、Word を削除して既存のラベルを変更することを示します。結果として生成されるバイナリラベル label の中では、string の中のエラーが最大限訂正されています。
stobl 関数は、文字列の先頭が 0x で、flags の中に NEW_LABEL、NO_CORRECTION のいずれかが指定されているときは、16 進ラベル表現もバイナリラベルに変換します ( hextob(3TSOL) を参照)。
flags は次の値をとります。
label の内容が使用されておらず、関連タイプのラベルとしてフォーマットされています。また、ADMIN_LOW であると仮定して変更を行います。NEW_LABEL が存在しない場合、プロセスの機密ラベルより下位にある正しいタイプの定義済みラベルとして、label の妥当性が検査されます。
文字形式のラベル string の中にエラーがあっても、訂正は行われません。string は完全で、label_encodings ファイルで必要とされるすべてのラベルコンポーネントを含んでいなくてはなりません。NO_CORRECTION フラグには、NEW_LABEL フラグも含まれます。
デフォルトのアクションが実行されます。
error は、関数が不成功の場合にのみ設定される戻りパラメータです。
stobsl() は、文字形式の機密ラベルをバイナリ機密ラベルに変換し、戻りパラメータ label の中に結果を格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。
stobclear() は、文字形式の認可上限文字列をバイナリ認可上限に変換し、結果を戻りパラメータ clearance の中に格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンポーネントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。認可上限の変換結果は、機密ラベルの変換結果と同じにならないことがあります。これらの関数は、label_encodings ファイルの異なるテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらの関数がゼロを返す場合は、error には次のいずれかの値が含まれます。
label_encodings ファイルにアクセスできませんでした。
ラベル label がこの変換に有効でなく、NEW_LABEL または NO_CORRECTION フラグが指定されていないか、ラベル label がプロセスの sensitivity label より下位でなく、プロセスが有効な特権セットの中に PRIV_SYS_TRANS_LABEL を持っていません。
文字形式のラベル string にエラーがあります。error は、どこで変換エラーが発生したかを示す string への索引で、1 を基準にしています。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。Solaris Trusted Extensions の将来のリリースでは、これらの関数が削除される可能性があります。
label_encodings ファイルに定義される ADMIN_LOW name 文字列と ADMIN_HIGH name 文字列に加えて、文字列「ADMIN_LOW」と「ADMIN_HIGH」は常に文字形式のラベルとして受け入れられ、それぞれ、適切な ADMIN_LOW ラベルと ADMIN_HIGH ラベルに変換されます。
既存の ADMIN_LOW ラベルの変更は、NEW_LABEL を指定したのと同じように働き、ラベルは label_encodings ファイルに指定される最下位ラベルで開始するように強制されます。
既存の ADMIN_HIGH ラベルの変更は、定義済みの最上位の格付けと label_encodings ファイルに指定される定義済みのすべてのコンパートメントを表すラベル変更の試みとして処理されます。
NO_CORRECTION フラグは、文字形式のラベルが完全かつ正確でなくてはならないときに使用されるので、バイナリ形式への (バイナリ形式からの) 変換の結果、同等な文字形式のラベルが生成されます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項