Trusted Solaris Developer's Guide

Get Process CMW Label

You can get the process CMW label and perform operations on it as a unit, or extract the sensitivity label portion and perform independent operations on it. This example gets the process CMW label, extracts the sensitivity label portion, translates the process CMW label to a text string, and prints the process CMW label.

#include <tsol/label.h>

main()
{
	int retval, length = 0;
	bclabel_t pCMWlabel;
	bslabel_t psenslabel;
	char *string;

/* Get process CMW label */
	retval = getcmwplabel(&pCMWlabel);

/* Get sensitivity label portion */
	getcsl(&psenslabel, &pCMWlabel);

/* Translate the process CMW label to text and print */
	retval = bcltos(&pCMWlabel, &string, length, LONG_CLASSIFICATION);
	printf("Process CMW label = %s\n", string);
}

The printf statement prints the following where ADMIN_LOW is the information label and [C] is the sensitivity label. This CMW label means the process is running at a sensitivity level of Confidential ([C]) with an information label of ADMIN_LOW. The CMW label is inherited from the workspace in which the program is run.


Process CMW label = ADMIN_LOW [C]

The text output depends on the flag parameter to bcltos(3TSOL) and specifications in label_encodings(4). See "Binary to Text Label Translation Routines" for information on flag parameter values.