名前 | 形式 | 機能説明 | 属性 | 戻り値 | 使用例 | ファイル | 関連項目 | 注意事項
#include <tsol/label.h>int bcltobanner(const bclabel_t *label, struct banner_fields *fields, const int flags);
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位であるラベル上でラベル変換を実行するために、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を持っていなくてはなりません。
bcltobanner() は、バイナリ形式の CMW ラベル、label を各種の文字コード形式のラベルや文字列に変換して、プリンタのバナーページやトレーラページとドキュメント本文ページの上下に表示します。fields 構造体のメンバーは、文字列ポインタか、文字列ポインタに事前に割り当てられたメモリーの長さです。文字列ポインタには、事前に割り当てられたメモリーへのポインタ、または値 "(char *)0" を含めることができます。文字列ポインタに事前に割り当てられたメモリーへのポインタが含まれる場合は、関連する長さメンバーはそのメモリーのサイズを示します。文字列ポインタに値 "(char *)0" が含まれる場合は、変換された文字コード形式のラベルや文字列を含むように malloc() を使ってメモリーが割り当てられます。変換された文字列は、割り当てられたまたは事前に割り当てられたメモリーにコピーされます。
banner_fields 構造体には、次の情報が格納されています。
struct banner_fields {
char *header; /* top and bottom banner/trailer page */
char *protect_as; /* "protect as" banner page section */
char *ilabel; /* Information Label, also top and bottom of body pages */
char *caveats; /* ``caveats'' banner page section */
char *channels; /* ``handling channels'' section */
/* lengths of pre-allocated string memory */
short header_len; /* header */
short protect_as_len; /* protect_as */
short short ilabel_len; /* Information Label */
short caveats_len; /* caveats */
short channels_len; /* handling channels */
};
fields 構造体のメンバーには次の意味があります。
バナーページとトレーラページの上下に印刷する文字列
バナーページとトレーラページの protect as 警告に印刷する文字列
バナーページとトレーラページの this system has labeledメッセージと、ドキュメント本文ページの上下に印刷する文字列
バナーページとトレーラページの caveats セクションに印刷する文字列
バナーページとトレーラページの channels セクションに印刷する文字列
header 文字列の事前に割り当てられたメモリーの長さ
protect_as 文字列の事前に割り当てられたメモリーの長さ
ilabel 文字列の事前に割り当てられたメモリーの長さ
caveats 文字列の事前に割り当てられたメモリーの長さ
channels 文字列の事前に割り当てられたメモリーの長さ
変換は、flags パラメータの値によって制御されます。 flags は、LONG_WORDS、SHORT_WORDS、または 0 (ゼロ) のいずれかになります。
LONG_WORDS
label に定義されている Words の長形式名を使って変換します。
SHORT_WORDS
label に定義されている Words の短形式名を使って変換します。Words に対して label_encodings ファイルに短い名前が定義されていない場合は、長形式名が使用されます。
flags の値 0 は LONG_WORDS と同等です。
次の属性の説明については、attributes(5) のマニュアルページを参照してください。
| 属性タイプ | 属性値 |
|---|---|
| 使用条件 | SUNWtsu |
| MT レベル | MT- 安全 |
bcltobanner() は、次の値を返します。
label が定義済みの情報ラベルと機密ラベルを持つ バイナリ形式の CMW ラベルでない場合、機密ラベル部分が情報ラベル部分より優位でない場合、プロセス機密ラベル部分が機密ラベル部分より優位でなく、プロセスが有効な特権セットの中に PRIV_SYS_TRANS_LABEL を持たない場合、label_encodings ファイルにアクセスできない場合。
fields 構造体の中の文字列に対して メモリーを割り当てられない場合、事前に割り当てられたメモリーのうちの 1 つに 文字列を収めきれない場合。事前に割り当てられた文字列の値は、NULL string(fields-> string[0] = '¥00';) に設定されます。
成功した場合。
HEADER
この出力は、手作業で確認したり降格する場合を除いて、次のように
保護されなくてはなりません。
PROTECT_AS
システムはこのデータに次のようにラベルを付けます。
ILABEL
CAVEATS
CHANNELS
HEADER
bilconjoin(3), blcompare(3), blinset(3), blmanifest(3), blminmax(3), blportion(3), bltos(3), bltype(3), blvalid(3), btohex(3), hextob(3), labelinfo(3), labelvers(3), sbltos(3), stobl(3), label_encodings(4)
『Trusted Solaris 開発ガイド』および Trusted Solaris の管理者用のマニュアル
このルーチンによって割り当てられたメモリーが使用されていない場合、呼び出し元は free() を使ってメモリーを解放しなければなりません。ADMIN_LOW ラベル部分と ADMIN_HIGH ラベル部分は他のルーチンとは異なる方法で割り当てられます。ラベルの機密ラベル部分が ADMIN_LOW の場合は、ラベルは label_encodings ファイルに定義されている最下位機密ラベルに割り当てられます。ラベルが ADMIN_HIGH の場合は、ラベルは最上位の格付けと、label_encodings ファイルに定義されているすべてのコンパートメントに対応付けられます。