#undef strcasecmp
const uint64_t se_priv_all = SE_ALL_PRIVS;
-static const uint64_t se_priv_end = SE_END;
/* Define variables for all privileges so we can use the
uint64_t* in the various se_priv_XXX() functions */
{SEC_PRIV_ADD_USERS, SE_ADD_USERS, "SeAddUsersPrivilege", "Add users and groups to the domain"},
{SEC_PRIV_DISK_OPERATOR, SE_DISK_OPERATOR, "SeDiskOperatorPrivilege", "Manage disk shares"},
- {0x0, SE_END, "", ""}
};
/***************************************************************************
bool se_priv_put_all_privileges(uint64_t *privilege_mask)
{
int i;
- uint32_t num_privs = count_all_privileges();
+ uint32_t num_privs = ARRAY_SIZE(privs);
if (!se_priv_copy(privilege_mask, &se_priv_none)) {
return false;
{
int i;
- for ( i=0; !se_priv_equal(&privs[i].privilege_mask, &se_priv_end); i++ ) {
+ uint32_t num_privs = ARRAY_SIZE(privs);
+
+ for ( i=0; i<num_privs; i++ ) {
if ( strequal( privs[i].name, name ) ) {
se_priv_copy( privilege_mask, &privs[i].privilege_mask );
return true;
{
int i;
+ uint32_t num_privs = ARRAY_SIZE(privs);
+
if (!name) {
return NULL;
}
- for ( i=0; !se_priv_equal(&privs[i].privilege_mask, &se_priv_end); i++ ) {
-
+ for ( i=0; i<num_privs; i++ ) {
if ( strequal( privs[i].name, name ) ) {
return privs[i].description;
}
int count_all_privileges( void )
{
- /*
- * The -1 is due to the weird SE_END record...
- */
- return (sizeof(privs) / sizeof(privs[0])) - 1;
+ return ARRAY_SIZE(privs);
}
struct lsa_LUIDAttribute priv_luid;
int i;
- ZERO_STRUCT( priv_luid );
+ uint32_t num_privs = ARRAY_SIZE(privs);
- for ( i=0; !se_priv_equal(&privs[i].privilege_mask, &se_priv_end); i++ ) {
+ ZERO_STRUCT( priv_luid );
+ for ( i=0; i<num_privs; i++ ) {
if ( se_priv_equal( &privs[i].privilege_mask, privilege_mask ) ) {
priv_luid.luid.low = privs[i].luid;
priv_luid.luid.high = 0;
{
int i;
+ uint32_t num_privs = ARRAY_SIZE(privs);
+
if (set->high != 0)
return NULL;
- for ( i=0; !se_priv_equal(&privs[i].privilege_mask, &se_priv_end); i++ ) {
+ for ( i=0; i<num_privs; i++ ) {
if ( set->low == privs[i].luid ) {
return privs[i].name;
}
bool se_priv_to_privilege_set( PRIVILEGE_SET *set, uint64_t *privilege_mask )
{
int i;
- uint32_t num_privs = count_all_privileges();
+ uint32_t num_privs = ARRAY_SIZE(privs);
struct lsa_LUIDAttribute luid;
luid.attribute = 0;
static bool luid_to_se_priv( struct lsa_LUID *luid, uint64_t *privilege_mask )
{
int i;
- uint32_t num_privs = count_all_privileges();
+ uint32_t num_privs = ARRAY_SIZE(privs);
for ( i=0; i<num_privs; i++ ) {
if ( luid->low == privs[i].luid ) {