Trusted Solaris 開発ガイド

ブラケット化の例

次に、setfpriv(1) をブラケット化すべき位置を示すコメントが入った、アプリケーションコードの本体の例を示します。

	PRIV_EMPTY(&priv_get);
 	PRIV_EMPTY(&priv_set);

/* 有効セット内で file_setpriv をオン (有効) にする */
 	retval = setfpriv(execfile, PRIV_SET, PRIV_ALLOWED, &priv_get);
/* file_setpriv 特権をオフ (無効) にする */

 	if((string = str_to_priv_set(priv_names, &priv_set, "$")) != NULL)
 			printf("string = %s errno = %d¥n", string, errno);

/* 有効セット内で file_setpriv をオン (有効) にする */
 	retval = setfpriv(execfile,PRIV_ON, PRIV_ALLOWED, &priv_set);
/* file_setpriv 特権をオフ (無効) にする */

 	retval = getfpriv(execfile, PRIV_ALLOWED, &priv_get);
 	priv_set_to_str(&priv_get, '$', buffer, &length);
 	printf("execfile Allowed = %s¥n", buffer);

 	PRIV_EMPTY(&priv_set);
 	PRIV_EMPTY(&priv_get);
 	PRIV_ASSERT(&priv_set, PRIV_FILE_MAC_WRITE);

/* 有効セット内で file_setpriv をオン (有効) にする */
 	retval = setfpriv(execfile, PRIV_ON, PRIV_FORCED, &priv_set);
/* file_setpriv 特権をオフ (無効) にする */

 	retval = getfpriv(execfile, PRIV_FORCED, &priv_get);
 	priv_set_to_str(&priv_get, `$', buffer, &length);
 	printf("execfile Forced =%s¥n", buffer);