summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/libsmb/namequery.c19
-rw-r--r--source/smbd/password.c17
2 files changed, 17 insertions, 19 deletions
diff --git a/source/libsmb/namequery.c b/source/libsmb/namequery.c
index 59a3856cfb8..173fe12bcbc 100644
--- a/source/libsmb/namequery.c
+++ b/source/libsmb/namequery.c
@@ -629,23 +629,6 @@ static BOOL resolve_hosts(const char *name,
}
/********************************************************
- Resolve a name into an IP address. Use this function if
- the string is either an IP address, DNS or host name
- or NetBIOS name. This uses the name switch in the
- smb.conf to determine the order of name resolution.
-*********************************************************/
-BOOL is_ip_address(const char *name)
-{
- int i;
- for (i=0; name[i]; i++)
- if (!(isdigit((int)name[i]) || name[i] == '.'))
- return False;
-
- return True;
-}
-
-
-/********************************************************
Internal interface to resolve a name into an IP address.
Use this function if the string is either an IP address, DNS
or host name or NetBIOS name. This uses the name switch in the
@@ -775,7 +758,7 @@ BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
ret = resolve_name(dest_host, ip, 0x20);
}
- if (is_ip_address(dest_host))
+ if (is_ipaddress(dest_host))
{
fstrcpy(dest_host, "*SMBSERVER");
}
diff --git a/source/smbd/password.c b/source/smbd/password.c
index 411098fbc96..2876903b6f9 100644
--- a/source/smbd/password.c
+++ b/source/smbd/password.c
@@ -1199,16 +1199,31 @@ use this machine as the password server.\n"));
given a name or IP address.
************************************************************************/
-static BOOL connect_to_domain_password_server(struct cli_state *pcli, char *remote_machine,
+static BOOL connect_to_domain_password_server(struct cli_state *pcli,
+ char *server,
unsigned char *trust_passwd)
{
struct in_addr dest_ip;
+ fstring remote_machine;
if(cli_initialise(pcli) == False) {
DEBUG(0,("connect_to_domain_password_server: unable to initialize client connection.\n"));
return False;
}
+ if (is_ipaddress(server)) {
+ struct in_addr to_ip;
+
+ if (!inet_aton(server, &to_ip) ||
+ !name_status_find(0x20, to_ip, remote_machine)) {
+ DEBUG(1, ("connect_to_domain_password_server: Can't "
+ "resolve name for IP %s\n", server));
+ return False;
+ }
+ } else {
+ fstrcpy(remote_machine, server);
+ }
+
standard_sub_basic(remote_machine);
strupper(remote_machine);