diff options
author | Andrew Bartlett <abartlet@samba.org> | 2007-09-17 05:31:49 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 15:06:51 -0500 |
commit | 08c97435d3dd055329d41b3814af687c7404533f (patch) | |
tree | cd7b2eacbda9378478ea4b8eca2168bf3d3a151e /source4/dsdb/common | |
parent | ffbb7e40604b9cffeb0c226279b929497b03a964 (diff) | |
download | samba-08c97435d3dd055329d41b3814af687c7404533f.tar.gz samba-08c97435d3dd055329d41b3814af687c7404533f.tar.bz2 samba-08c97435d3dd055329d41b3814af687c7404533f.zip |
r25194: A major rework of the Samba4 LSA LookupNames and LookupSids code, with
a new torture suite to match.
This should fix bug #4954 by Matthias Wallnöfer <mwallnoefer@yahoo.de>
Previously we had no knowlege of BUILTIN or well-known names.
This code needs expansion to check with winbind for trusted domains.
Andrew Bartlett
(This used to be commit e6fc0e1f54ad64bdddc88e9ebd0d8d181b6ce26a)
Diffstat (limited to 'source4/dsdb/common')
-rw-r--r-- | source4/dsdb/common/sidmap.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/source4/dsdb/common/sidmap.c b/source4/dsdb/common/sidmap.c index 8a594f3fc7..023c88ad7f 100644 --- a/source4/dsdb/common/sidmap.c +++ b/source4/dsdb/common/sidmap.c @@ -550,13 +550,13 @@ _PUBLIC_ NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, TALLOC_CTX *mem_ctx, const struct dom_sid *sid, const char **name, - uint32_t *atype) + enum lsa_SidType *rtype) { NTSTATUS status; struct dom_sid *domain_sid; TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx); - uint32_t rid; - + uint32_t rid, atype; + status = sidmap_primary_domain_sid(sidmap, tmp_ctx, &domain_sid); if (!NT_STATUS_IS_OK(status)) { return NT_STATUS_NO_SUCH_DOMAIN; @@ -577,7 +577,9 @@ _PUBLIC_ NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, if (rid < SIDMAP_LOCAL_GROUP_BASE) { struct passwd *pwd; uid_t uid = rid - SIDMAP_LOCAL_USER_BASE; - *atype = ATYPE_NORMAL_ACCOUNT; + atype = ATYPE_NORMAL_ACCOUNT; + *rtype = samdb_atype_map(atype); + pwd = getpwuid(uid); if (pwd == NULL) { *name = talloc_asprintf(mem_ctx, "uid%u", uid); @@ -587,7 +589,8 @@ _PUBLIC_ NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, } else { struct group *grp; gid_t gid = rid - SIDMAP_LOCAL_GROUP_BASE; - *atype = ATYPE_LOCAL_GROUP; + atype = ATYPE_LOCAL_GROUP; + *rtype = samdb_atype_map(atype); grp = getgrgid(gid); if (grp == NULL) { *name = talloc_asprintf(mem_ctx, "gid%u", gid); |