diff options
-rw-r--r-- | source3/libsmb/namequery.c | 19 | ||||
-rw-r--r-- | source3/smbd/password.c | 17 |
2 files changed, 17 insertions, 19 deletions
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index 59a3856cfb..173fe12bcb 100644 --- a/source3/libsmb/namequery.c +++ b/source3/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/source3/smbd/password.c b/source3/smbd/password.c index 69ba042155..cdf3e28b03 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -1211,16 +1211,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); |