summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcli/security/privileges.c13
-rw-r--r--libcli/security/privileges.h10
2 files changed, 23 insertions, 0 deletions
diff --git a/libcli/security/privileges.c b/libcli/security/privileges.c
index adb67c19f2..d2731c3dd0 100644
--- a/libcli/security/privileges.c
+++ b/libcli/security/privileges.c
@@ -422,6 +422,19 @@ bool security_token_has_privilege(const struct security_token *token, enum sec_p
return false;
}
+bool security_token_system_privilege(const struct security_token *token)
+{
+ if (token == NULL) {
+ return false;
+ }
+
+ if (token->privilege_mask == (uint64_t)~0) {
+ return true;
+ }
+
+ return false;
+}
+
/*
set a bit in the privilege mask
*/
diff --git a/libcli/security/privileges.h b/libcli/security/privileges.h
index a65dbdfcd7..eb3ab5e784 100644
--- a/libcli/security/privileges.h
+++ b/libcli/security/privileges.h
@@ -89,6 +89,16 @@ const char *sec_privilege_name_from_index(int idx);
*/
bool security_token_has_privilege(const struct security_token *token, enum sec_privilege privilege);
+
+/**
+ * @brief Check if the security token has system privileges.
+ *
+ * @param[in] token The token to check.
+ *
+ * @return True if the token has system privileges, false if not.
+ */
+bool security_token_system_privilege(const struct security_token *token);
+
/*
set a bit in the privilege mask
*/