名前 | 形式 | 機能説明 | 属性 | 戻り値 | エラー | ファイル | 関連項目 | 注意事項
#include <">tsol/label.h>int stobcl(const char *string, bclabel_t *label, const int flags, int *error);
呼び出し元プロセスは、プロセスの機密ラベルより優位にある文字形式のラベル上でラベル変換を実行するために、有効な特権セットの中に PRIV_SYS_TRANS_LABEL
を持っていなくてはなりません。
stobl 関数は、文字形式のラベルをバイナリラベルに変換します。また、その既存の値を基準に、既存のバイナリラベルを増分または減分して新しいバイナリラベルを生成し、既存のバイナリラベルを変更します。
入力する文字形式のラベル string の汎用形式は次のとおりです。
[ + ] [ classification name ] [ [ + | - ] word ... ]
語の前後のスペースは無視されます。フィールド間はスペース、「/」(スラッシュ)、または「,」(カンマ) で区切ります。大文字と小文字は区別されません。string の先頭が + または - の場合、string は既存のラベルを変更したものと解釈されます。string の先頭が格付け名で、その後に + または - が続く場合は、新しい格付けが使用され、古い label の残りの部分は保管されて、string に指定されるように変更されます。+ は、Word を追加して既存のラベルを変更することを示します。- は、Word を削除し既存のラベルを変更することを示します。結果として生成されるバイナリラベル label の中では、string の中のエラーが最大限に訂正されています。
stobl 関数は、文字列の先頭が 0x で、flags の中に NEW_LABEL、NO_CORRECTION のいずれかが指定されているときは、16 進ラベル表現もバイナリラベルに変換します (「hextob()」を参照)。
flags は次の値をとります。
label の内容が使用されておらず、関連タイプのラベルとしてフォーマットされています。また、ADMIN_LOW
であると仮定して変更を行います。NEW_LABEL が存在しない場合は、プロセスの機密ラベルより下位にある正しいタイプの定義済みラベルとしての妥当性が検査されます。
文字形式のラベル string の中にエラーがあっても、訂正は行われません。stringは完全で、label_encodings ファイルで必要とされるすべてのラベルコンポーネントを含んでいなくてはなりません。NO_CORRECTION フラグには NEW_LABEL フラグも含まれます。
デフォルトのアクションが行われます。
error は、関数が不成功の場合にのみ設定される戻りパラメータです。
stobcl() は、文字形式の CMW ラベル文字列をバイナリ CMW ラベルに変換し、戻りパラメータ label の中に結果を格納します。string は次の形式をとります。
[ information label ] [ [ information label ] ]
または
'*'
flags は、NEW_LABEL または NO_CORRECTION と ONLY_INFORMATION_LABEL の論理和か、0(ゼロ) になります。NEW_LABEL または NO_CORRECTION と ONLY_INFORMATION_LABEL の両方が指定されている場合は、label の機密ラベル部分が呼び出し元の現在の機密ラベルに設定されます。ONLY_INFORMATION_LABEL が指定されている場合を除けば、機密ラベルが最初に変換されます。指定されているかどうかは、string の中に「[」文字があるかどうかでわかります。この変換結果は必ず、プロセスの機密ラベルより下位の機密ラベルになります。そうでない場合は、機密ラベルでエラーが報告されます。変換された機密ラベル (label パラメータ内に存在するラベル) は、変換される情報ラベルより優位になくてはなりません。そうでない場合は、こうした変換によって、NO_CORRECTION が指定されている場合を除けば、ラベルが最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセット(およびマーキングセット) より優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。string に「*」(星印) が含まれる特別な場合は、label の機密ラベル部分が label の情報ラベル部分の情報ラベルに設定されます。
stobsl() は、文字形式の機密ラベル文字列をバイナリ機密ラベルに変換し、結果を戻りパラメータ label の中に格納します。stringは次の形式をとります。[ [ ] sensitivity label
flags は、NEW_LABEL、NO_CORRECTION、0(ゼロ) のうちのいずれかになります。こうした変換によって、NO_CORRECTION が指定されている場合を除けば、ラベルが最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。
stobil() は、文字形式の情報ラベル文字列をバイナリ情報ラベルに変換し、結果を戻りパラメータ label の中に格納します。stringは information label の形式をとります。
flags は、 NEW_LABEL、NO_CORRECTION 0(ゼロ) のうちのいずれかになります。こうした変換によって、NO_CORRECTION が指定されている場合を除いて、ラベルが最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセットとマーキングセットより優位になり、label_encodings で必要とされるが string 内に存在しない他のラベルコンポーネントを含むように訂正されます。
stobclear() は、文字形式の認可上限文字列をバイナリ認可上限に変換し、結果を戻りパラメータ clearance の中に格納します。string は clearance の形式をとります。
flags は、NEW_LABEL、NO_CORRECTION、0(ゼロ) のうちのいずれかになります。こうした変換によって、NO_CORRECTIONが指定されている場合を除けば、ラベルが最下位の格付けと label_encodings ファイルに指定される初期のコンポーネントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。格付けの変換結果は機密ラベルの変換結果と同じにならないことがあります。これらの関数は、label_encodings ファイルの異なるテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
次の属性の説明については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWtsu |
MT レベル | MT- 安全 |
これらの関数がゼロを返す場合は、error には次のいずれかの値が含まれます。
.label_encodings ファイルにアクセスできませんでした。
ラベル label がこの変換に有効でなく、NEW_LABEL または NO_CORRECTION フラグが指定されていないか、ラベル label がプロセスの機密ラベルより下位でなく、プロセスが有効な特権セットの中に PRIV_SYS_TRANS_LABEL
を持っていません。
文字形式のラベル string にエラーがあります。error は、どこで変換エラーが発生したかを示す string への索引で、1 を基準にしています。
bcltobanner(3), bilconjoin(3), blcompare(3), blinset(3), blmanifest(3), blminmax(3), blportion(3), bltocolor(3), bltos(3), bltype(3), blvalid(3), btohex(3), hextob(3), labelinfo(3), labelvers(3), sbltos(3), label_encodings(4)
『Trusted Solaris 開発ガイド』、『Trusted Solaris のユーザー用のマニュアル』、および Trusted Solaris の管理者用のマニュアル
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 フラグは、文字形式のラベルが完全かつ正確でなくてはならないときに使用されるので、バイナリ形式への (バイナリ形式からの) 変換の結果、同等な文字形式のラベルが生成されます。