名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項 | 警告
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int str_to_label(const char *string, m_label_t **label, const m_label_type_t label_type, uint_t flags, int *error);
str_to_label() は、人間が読み取り可能な文字列を構文解析して、要求されたタイプのラベルにする単純な関数です。
string は、構文解析する文字列です。string が M_INTERNAL タイプの label_to_str() 変換の結果である場合、flags は無視され、以前に構文解析されたラベルがすべて置換されます。
*label が NULL の場合、str_to_label() は label に資源を割り当て、string を構文解析する前に要求された label_type にラベルを初期化します。
*label が NULL でない場合、ラベルは以前に構文解析されたラベルの結果である必須ラベルへのポインタになり、label_type は無視されます。タイプを反映する操作の場合、構文解析に使用されるタイプは label から派生します。
flags が L_MODIFY_EXISTING である場合、構文解析された文字列を使ってこのラベルを変更できます。
flags が L_NO_CORRECTION である場合、以前に構文解析されたラベルが置換されます。構文解析アルゴリズムは、欠落した要素を文字列から推測して、有効なラベルを作成しようとはしません。
flags が L_DEFAULT の場合は、以前に構文解析されたラベルが置換され、構文解析アルゴリズムによって、string の要素から有効なラベルを導き出すための最大限の動作が試みられます。
呼び出し元は、m_label_free() 関数を呼び出して、割り当てられた資源を解放します。label_type は、新たに割り当てられたラベルのタイプを定義します。ラベルタイプを次に示します。
文字列は、必須アクセス制御 (MAC) ラベルとして変換されます。
文字列は、ユーザーにアクセスが許可されるラベルのもっとも低い上限を表すラベルとして変換されます。
error が NULL の場合、 EINVAL の追加エラー情報は返しません。呼び出し元プロセスは、label および人間が読み取ることのできる string への必須読み取りアクセス権を保持する必要があります。または、呼び出し元プロセスは、sys_trans_label 特権を保持している必要があります。
マニフェスト定数 ADMIN_HIGH
および ADMIN_LOW
は、Trusted Extensions ポリシーの admin_high および admin_low ラベル値に対応する、人間が読み取り可能な文字列です。labels(5) を参照してください。
成功時に、str_to_label() 関数はゼロ (0) を返します。それ以外の場合は、-1 が返され、エラーを示す errno が設定されます。また、error が EINVAL の追加情報を提供します。それ以外の場合、 error は、文字列構文解析が失敗したポイントへのゼロから始まるインデックスになります。
次の場合に、str_to_label() 関数は失敗します。
無効なパラメータ。M_BAD_STRING は、string を構文解析できなかったことを示します。M_BAD_LABEL は、渡されたラベルでエラーが発生したことを示します。
システムがラベル変換をサポートしません。
システムの物理的制限を超過したために、size バイトのメモリーを割り当てることができません。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
MT レベル |
MT-安全 |
インタフェースの安定性 |
後述の「注意事項」および「警告」を参照 |
str_to_label() は「安定」です。米国国防情報局 (DIA) のエンコーディングスキーマに関連する構文解析タイプは、「標準」です。「標準」は、label_encodings(4) に指定されています。
構文解析規則の多くは、DIA ラベルエンコーディングスキーマに依存しています。このため、その他のラベルスキーマでは規則が有効でない場合があります。