libcli/security: implement SECURITY_GUEST
[samba.git] / libcli / security / security_token.c
index 40f13820eecd6c41e6f0f4d0a6db87583069ce4a..2e5a87be5043d29d0518bd0ec88da6a320b935d0 100644 (file)
@@ -84,12 +84,14 @@ bool security_token_is_sid(const struct security_token *token, const struct dom_
 bool security_token_is_sid_string(const struct security_token *token, const char *sid_string)
 {
        bool ret;
-       struct dom_sid *sid = dom_sid_parse_talloc(NULL, sid_string);
-       if (!sid) return false;
+       struct dom_sid sid;
 
-       ret = security_token_is_sid(token, sid);
+       ret = dom_sid_parse(sid_string, &sid);
+       if (!ret) {
+               return false;
+       }
 
-       talloc_free(sid);
+       ret = security_token_is_sid(token, &sid);
        return ret;
 }
 
@@ -117,15 +119,22 @@ bool security_token_has_sid(const struct security_token *token, const struct dom
 bool security_token_has_sid_string(const struct security_token *token, const char *sid_string)
 {
        bool ret;
-       struct dom_sid *sid = dom_sid_parse_talloc(NULL, sid_string);
-       if (!sid) return false;
+       struct dom_sid sid;
 
-       ret = security_token_has_sid(token, sid);
+       ret = dom_sid_parse(sid_string, &sid);
+       if (!ret) {
+               return false;
+       }
 
-       talloc_free(sid);
+       ret = security_token_has_sid(token, &sid);
        return ret;
 }
 
+bool security_token_has_builtin_guests(const struct security_token *token)
+{
+       return security_token_has_sid(token, &global_sid_Builtin_Guests);
+}
+
 bool security_token_has_builtin_administrators(const struct security_token *token)
 {
        return security_token_has_sid(token, &global_sid_Builtin_Administrators);