Solaris Trusted Extensions 開発ガイド

プロセスラベルの取得

このコーディング例は、プログラムが実行されるゾーンの機密ラベルを取得し、出力する方法を示します。

#include <tsol/label.h>

main()
{
    m_label_t* pl;
    char *plabel = NULL;
    int retval;

    /* プロセス機密ラベルの m_label_t を割り当てる */
    pl = m_label_alloc(MAC_LABEL);
    /* プロセス機密ラベルを取得する */
    if ((retval = getplabel(pl)) != 0) {
        perror("getplabel(pl) failed");
        exit(1);
    }

    /* プロセス機密ラベルをテキストに変換し、出力する */
    if ((retval = label_to_str(pl, &plabel, M_LABEL, LONG_NAMES)) != 0) {
        perror("label_to_str(M_LABEL, LONG_NAMES) failed");
        exit(1);
    }
    printf("Process label = %s\n", plabel);

    /* 割り当てられたメモリーを解放する */
    m_label_free(pl);
    free(plabel);
    }

printf() 文は機密ラベルを出力します。機密ラベルは、プログラムが実行されるゾーンから継承されます。次は、この例のプログラムから出力されたテキストです。


Process label = ADMIN_LOW

テキスト出力は、label_encodings ファイルでの指定に依存します。