--- samba-3.0.23/source/nsswitch/wb_client.c.orig 2006-04-19 22:29:21.000000000 -0400 +++ samba-3.0.23/source/nsswitch/wb_client.c 2006-07-14 17:35:01.000000000 -0400 @@ -464,3 +464,24 @@ return winbindd_request_response(WINBINDD_DOMAIN_INFO, &request, &response); } + +BOOL wb_is_alt_name(const char *domain, const char *candidate_altname) +{ + struct winbindd_request request; + struct winbindd_response response; + NSS_STATUS result; + + /* Call winbindd */ + + ZERO_STRUCT(request); + ZERO_STRUCT(response); + + fstrcpy(request.domain_name, domain); + + result = winbindd_request_response(WINBINDD_DOMAIN_INFO, &request, &response); + if (result != NSS_STATUS_SUCCESS) + return False; + if (strequal(response.data.domain_info.alt_name, candidate_altname)) + return True; + return False; +} --- samba-3.0.23/source/auth/auth.c.orig 2006-05-23 14:54:31.000000000 -0400 +++ samba-3.0.23/source/auth/auth.c 2006-07-14 17:37:32.000000000 -0400 @@ -168,7 +168,8 @@ if (!lp_allow_trusted_domains() && !(strequal("", domain) || strequal(lp_workgroup(), domain) || - is_myname(domain))) { + is_myname(domain)) + && !wb_is_alt_name(lp_workgroup(), domain)) { DEBUG(1, ("check_domain_match: Attempt to connect as user %s from domain %s denied.\n", user, domain)); return False; } else {