Trusted Solaris 開発ガイド

再入可能ルーチンによるバイナリと 16 進変換

再入可能 (MT-安全、マルチスレッドに対して安全) ルーチン bcleartoh_r(3) は、指定されたタイプの変数に対する記憶領域の割り当てと解放を必要とします。次の例は、記憶領域を割り当て、バイナリ CMW ラベルを 16 進に変換し、最後に記憶領域を解放します。機密ラベルまたは情報ラベルを 16 進に変換するプロセスと、元の形式に戻すプロセスはほとんど同じです。

#include <tsol/label.h>
 #include <stdio.h>

 main()
 {
 	int			retval;
 	bclabel_t			hcmwlabel, hexcmw;
 	char			*string, *hex;

 	getcmwplabel(&hcmwlabel);
 	hex = h_alloc(SUN_CMW_ID);
 	if((string = bcltoh_r(&hcmwlabel, hex)) != NULL)
 		printf("Hex string = %s¥n", string);

 	retval = htobcl(string, &hexcmw);
 	printf("Return Value = %d¥n", retval);
 	h_free(hex);
 }

printf(1) 文により、次のように 16 進形式でバイナリ認可上限が出力されます。


Hex string =0x00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000[0x00040c0000000000000000000000
000000000000000000000003ffffffffffff0000]

Return Value = 1