summaryrefslogtreecommitdiff
path: root/source3/nsswitch/winbindd_sid.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nsswitch/winbindd_sid.c')
-rw-r--r--source3/nsswitch/winbindd_sid.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/source3/nsswitch/winbindd_sid.c b/source3/nsswitch/winbindd_sid.c
index c6e503bef3..97e676813d 100644
--- a/source3/nsswitch/winbindd_sid.c
+++ b/source3/nsswitch/winbindd_sid.c
@@ -316,8 +316,16 @@ enum winbindd_result winbindd_sid_to_gid(struct winbindd_cli_state *state)
fstring dom_name, name;
enum SID_NAME_USE type;
- if (!winbindd_lookup_name_by_sid(&sid, dom_name, name, &type))
- return WINBINDD_ERROR;
+ if (sid_check_is_in_our_domain(&sid)) {
+ /* This is for half-created aliases... */
+ type = SID_NAME_ALIAS;
+ } else {
+ /* Foreign domains need to be looked up by the DC if
+ * it's the right type */
+ if (!winbindd_lookup_name_by_sid(&sid, dom_name, name,
+ &type))
+ return WINBINDD_ERROR;
+ }
if ((type != SID_NAME_DOM_GRP) && (type != SID_NAME_ALIAS) &&
(type != SID_NAME_WKN_GRP))