diff options
author | Ralph Boehme <slow@samba.org> | 2018-11-28 17:19:39 +0100 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2018-12-05 08:12:16 +0100 |
commit | 2de5f06d399109009c343b0acfef822db38502a1 (patch) | |
tree | c514d24d1afd94da82609433542299bada167ab3 /libcli | |
parent | c46b6b111e8adcd7cf029e5c3293cbdc471793db (diff) | |
download | samba-2de5f06d399109009c343b0acfef822db38502a1.tar.gz |
libcli/security: add dom_sid_lookup_is_predefined_domain()
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12164
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Ralph Boehme <slow@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: David Mulder <dmulder@suse.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'libcli')
-rw-r--r-- | libcli/security/dom_sid.h | 1 | ||||
-rw-r--r-- | libcli/security/util_sid.c | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h index 1effdbc2f6c..abaf305f96a 100644 --- a/libcli/security/dom_sid.h +++ b/libcli/security/dom_sid.h @@ -74,6 +74,7 @@ NTSTATUS dom_sid_lookup_predefined_sid(const struct dom_sid *sid, enum lsa_SidType *type, const struct dom_sid **authority_sid, const char **authority_name); +bool dom_sid_lookup_is_predefined_domain(const char *domain); int dom_sid_compare_auth(const struct dom_sid *sid1, const struct dom_sid *sid2); diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c index af04dff1325..531d3809565 100644 --- a/libcli/security/util_sid.c +++ b/libcli/security/util_sid.c @@ -879,6 +879,39 @@ NTSTATUS dom_sid_lookup_predefined_name(const char *name, return NT_STATUS_NONE_MAPPED; } +bool dom_sid_lookup_is_predefined_domain(const char *domain) +{ + size_t di; + bool match; + + if (domain == NULL) { + domain = ""; + } + + match = strequal(domain, ""); + if (match) { + /* + * Strange, but that's what W2012R2 does. + */ + domain = "BUILTIN"; + } + + for (di = 0; di < ARRAY_SIZE(predefined_domains); di++) { + const struct predefined_domain_mapping *d = + &predefined_domains[di]; + int cmp; + + cmp = strcasecmp(d->domain, domain); + if (cmp != 0) { + continue; + } + + return true; + } + + return false; +} + NTSTATUS dom_sid_lookup_predefined_sid(const struct dom_sid *sid, const char **name, enum lsa_SidType *type, |