winbind: provide passwd struct for group sid with ID_TYPE_BOTH mapping (again)
authorMichael Adam <obnox@samba.org>
Fri, 11 Jan 2019 09:44:30 +0000 (10:44 +0100)
committerChristof Schmitt <cs@samba.org>
Fri, 27 Sep 2019 17:25:29 +0000 (17:25 +0000)
https://git.samba.org/?p=samba.git;a=commitdiff;h=394622ef8c916cf361f8596dba4664dc8d6bfc9e
originally introduced the above feature.

This functionality was undone as part of "winbind: Restructure get_pwsid"
https://git.samba.org/?p=samba.git;a=commitdiff;h=bce19a6efe11980933531f0349c8f5212419366a
I think that this semantic change was accidential.

This patch undoes the semantic change and re-establishes the
functionality.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14141

Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Christof Schmitt <cs@samba.org>
Autobuild-Date(master): Fri Sep 27 17:25:29 UTC 2019 on sn-devel-184

selftest/knownfail.d/passwd-id-type-both [deleted file]
source3/winbindd/wb_queryuser.c

diff --git a/selftest/knownfail.d/passwd-id-type-both b/selftest/knownfail.d/passwd-id-type-both
deleted file mode 100644 (file)
index e969ef8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-idmap\.rid.getpwnam for ID_TYPE_BOTH group succeeds\(ad_member_idmap_rid\)
-idmap\.rid.getpwnam for ID_TYPE_BOTH group output\(ad_member_idmap_rid\)
-idmap\.rid.getpwuid for ID_TYPE_BOTH group succeeds\(ad_member_idmap_rid\)
-idmap\.rid.getpwuid for ID_TYPE_BOTH group output\(ad_member_idmap_rid\)
index 17170c3352ac189daf0055956fb0fa04fd165bf2..2eb61406fc5acd4f8d3323412fcd910f18663b4a 100644 (file)
@@ -166,8 +166,22 @@ static void wb_queryuser_got_domain(struct tevent_req *subreq)
                return;
        }
 
-       if (type != SID_NAME_USER) {
-               /* allow SID_NAME_COMPUTER? */
+       switch (type) {
+       case SID_NAME_USER:
+       case SID_NAME_COMPUTER:
+               /*
+                * user case: we only need the account name from lookup_sids
+                */
+               break;
+       case SID_NAME_DOM_GRP:
+       case SID_NAME_ALIAS:
+       case SID_NAME_WKN_GRP:
+               /*
+                * also treat group-type SIDs (they might map to ID_TYPE_BOTH)
+                */
+               sid_copy(&info->group_sid, &info->user_sid);
+               break;
+       default:
                tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER);
                return;
        }