mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
krb5-locator: fix dsgetdcname caller.
Guenther
This commit is contained in:
parent
4e04c5ae1b
commit
bf5c80c8eb
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Unix SMB/CIFS implementation.
|
Unix SMB/CIFS implementation.
|
||||||
kerberos locator plugin
|
kerberos locator plugin
|
||||||
Copyright (C) Guenther Deschner 2007
|
Copyright (C) Guenther Deschner 2007-2008
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -247,18 +247,19 @@ static bool ask_winbind(const char *realm, char **dcname)
|
|||||||
NSS_STATUS status;
|
NSS_STATUS status;
|
||||||
struct winbindd_request request;
|
struct winbindd_request request;
|
||||||
struct winbindd_response response;
|
struct winbindd_response response;
|
||||||
|
const char *dc = NULL;
|
||||||
|
|
||||||
ZERO_STRUCT(request);
|
ZERO_STRUCT(request);
|
||||||
ZERO_STRUCT(response);
|
ZERO_STRUCT(response);
|
||||||
|
|
||||||
request.flags = 0x40020600;
|
request.data.dsgetdcname.flags = 0x40020600;
|
||||||
/* DS_KDC_REQUIRED |
|
/* DS_KDC_REQUIRED |
|
||||||
DS_IS_DNS_NAME |
|
DS_IS_DNS_NAME |
|
||||||
DS_RETURN_DNS_NAME |
|
DS_RETURN_DNS_NAME |
|
||||||
DS_IP_REQUIRED */
|
DS_IP_REQUIRED */
|
||||||
|
|
||||||
strncpy(request.domain_name, realm,
|
strncpy(request.data.dsgetdcname.domain_name, realm,
|
||||||
sizeof(request.domain_name)-1);
|
sizeof(request.data.dsgetdcname.domain_name)-1);
|
||||||
|
|
||||||
status = winbindd_request_response(WINBINDD_DSGETDCNAME,
|
status = winbindd_request_response(WINBINDD_DSGETDCNAME,
|
||||||
&request, &response);
|
&request, &response);
|
||||||
@ -270,7 +271,23 @@ static bool ask_winbind(const char *realm, char **dcname)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*dcname = strdup(response.data.dc_name);
|
if (response.data.dsgetdcname.dc_address[0] != '\0') {
|
||||||
|
dc = response.data.dsgetdcname.dc_address;
|
||||||
|
if (dc[0] == '\\') dc++;
|
||||||
|
if (dc[0] == '\\') dc++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dc && response.data.dsgetdcname.dc_unc[0] != '\0') {
|
||||||
|
dc = response.data.dsgetdcname.dc_unc;
|
||||||
|
if (dc[0] == '\\') dc++;
|
||||||
|
if (dc[0] == '\\') dc++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dc) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
*dcname = strdup(dc);
|
||||||
if (!*dcname) {
|
if (!*dcname) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user