Print this page
uts: add a concept of a 'default' set of privileges, separate from 'basic'
uts: give privilege macros more sensible names

*** 87,108 **** #else int alloc_test_priv = priv_debug; #endif rw_init(&privinfo_lock, NULL, RW_DRIVER, NULL); ! PRIV_BASIC_ASSERT(priv_basic); ! PRIV_UNSAFE_ASSERT(&priv_unsafe); priv_fillset(&priv_fullset); /* * When booting with priv_debug set or in a DEBUG kernel, then we'll * add an additional basic privilege and we verify that it is always * present in E. */ if (alloc_test_priv != 0 && (priv_basic_test = priv_getbyname("basic_test", PRIV_ALLOC)) >= 0) { priv_addset(priv_basic, priv_basic_test); } devpolicy_init(); } --- 87,117 ---- #else int alloc_test_priv = priv_debug; #endif rw_init(&privinfo_lock, NULL, RW_DRIVER, NULL); ! PRIV_BASIC_ADDSET(priv_basic); ! ! /* ! * The "default" set is the basic privileges + any 'default' ! * privileges. with no traditional unix connotations. ! */ ! PRIV_BASIC_ADDSET(priv_default); ! PRIV_DEFAULT_ADDSET(priv_default); ! ! PRIV_UNSAFE_ADDSET(&priv_unsafe); priv_fillset(&priv_fullset); /* * When booting with priv_debug set or in a DEBUG kernel, then we'll * add an additional basic privilege and we verify that it is always * present in E. */ if (alloc_test_priv != 0 && (priv_basic_test = priv_getbyname("basic_test", PRIV_ALLOC)) >= 0) { priv_addset(priv_basic, priv_basic_test); + priv_addset(priv_default, priv_basic_test); } devpolicy_init(); }
*** 478,502 **** void priv_addset(priv_set_t *set, int priv) { ASSERT(priv >= 0 && priv < MAX_PRIVILEGE); ! __PRIV_ASSERT(set, priv); } void priv_delset(priv_set_t *set, int priv) { ASSERT(priv >= 0 && priv < MAX_PRIVILEGE); ! __PRIV_CLEAR(set, priv); } boolean_t priv_ismember(const priv_set_t *set, int priv) { ASSERT(priv >= 0 && priv < MAX_PRIVILEGE); ! return (__PRIV_ISASSERT(set, priv) ? B_TRUE : B_FALSE); } #define PRIV_TEST_BODY(test) \ int i; \ \ --- 487,511 ---- void priv_addset(priv_set_t *set, int priv) { ASSERT(priv >= 0 && priv < MAX_PRIVILEGE); ! __PRIV_ADDSET(set, priv); } void priv_delset(priv_set_t *set, int priv) { ASSERT(priv >= 0 && priv < MAX_PRIVILEGE); ! __PRIV_DELSET(set, priv); } boolean_t priv_ismember(const priv_set_t *set, int priv) { ASSERT(priv >= 0 && priv < MAX_PRIVILEGE); ! return (__PRIV_ISMEMBER(set, priv) ? B_TRUE : B_FALSE); } #define PRIV_TEST_BODY(test) \ int i; \ \