{
NTSTATUS result;
struct DS_DOMAIN_CONTROLLER_INFO *info = NULL;
+ const char *dc = NULL;
state->request.domain_name
[sizeof(state->request.domain_name)-1] = '\0';
return WINBINDD_ERROR;
}
- fstrcpy(state->response.data.dc_name, info->domain_controller_name);
+ if (info->domain_controller_address) {
+ dc = info->domain_controller_address;
+ if ((dc[0] == '\\') && (dc[1] == '\\')) {
+ dc += 2;
+ }
+ }
+
+ if ((!dc || !is_ipaddress(dc)) && info->domain_controller_name) {
+ dc = info->domain_controller_name;
+ }
+
+ if (!dc || !*dc) {
+ return WINBINDD_ERROR;
+ }
+
+ fstrcpy(state->response.data.dc_name, dc);
return WINBINDD_OK;
}