if (rhost == NULL) {
our_rhost = client_name();
if (strequal(our_rhost,"UNKNOWN"))
- our_rhost = client_addr(addr);
+ our_rhost = client_addr(addr,sizeof(addr));
} else {
our_rhost = rhost;
}
ret = allow_access(deny_list,
allow_list,
"",
- get_peer_addr(sock,addr));
+ get_peer_addr(sock,addr,sizeof(addr)));
} else {
DEBUG (3, ("check_access: hostnames in "
"host allow/deny list.\n"));
ret = allow_access(deny_list,
allow_list,
get_peer_name(sock,true),
- get_peer_addr(sock,addr));
+ get_peer_addr(sock,addr,sizeof(addr)));
}
if (ret) {
DEBUG(2,("Allowed connection from %s (%s)\n",
only_ip ? "" : get_peer_name(sock,true),
- get_peer_addr(sock,addr)));
+ get_peer_addr(sock,addr,sizeof(addr))));
} else {
DEBUG(0,("Denied connection from %s (%s)\n",
only_ip ? "" : get_peer_name(sock,true),
- get_peer_addr(sock,addr)));
+ get_peer_addr(sock,addr,sizeof(addr))));
}
}
a_string = realloc_string_sub(a_string, "%D", r);
break;
case 'I' :
- a_string = realloc_string_sub(a_string, "%I", client_addr(addr));
+ a_string = realloc_string_sub(a_string, "%I",
+ client_addr(addr, sizeof(addr)));
break;
case 'i':
a_string = realloc_string_sub( a_string, "%i", client_socket_addr() );
char addr[INET6_ADDRSTRLEN];
client_fd = fd;
safe_strcpy(client_ip_string,
- get_peer_addr(client_fd,addr),
+ get_peer_addr(client_fd,addr,sizeof(addr)),
sizeof(client_ip_string)-1);
}
return get_peer_name(client_fd,false);
}
-const char *client_addr(char addr[INET6_ADDRSTRLEN])
+const char *client_addr(char *addr, size_t addrlen)
{
- return get_peer_addr(client_fd,addr);
+ return get_peer_addr(client_fd,addr,addrlen);
}
const char *client_socket_addr(void)
******************************************************************/
static const char *get_peer_addr_internal(int fd,
- char addr_buf[INET6_ADDRSTRLEN],
+ char *addr_buf,
+ size_t addr_buf_len,
struct sockaddr_storage *pss,
socklen_t *plength)
{
struct sockaddr_storage ss;
socklen_t length = sizeof(ss);
- safe_strcpy(addr_buf,"0.0.0.0",sizeof(addr_buf)-1);
+ safe_strcpy(addr_buf,"0.0.0.0",addr_buf_len-1);
if (fd == -1) {
return addr_buf;
with dns. To avoid the delay we avoid the lookup if
possible */
if (!lp_hostname_lookups() && (force_lookup == false)) {
- pstrcpy(name_buf, get_peer_addr(fd, addr_buf));
+ pstrcpy(name_buf, get_peer_addr(fd, addr_buf, sizeof(addr_buf)));
return name_buf;
}
- p = get_peer_addr_internal(fd, addr_buf, &ss, &length);
+ p = get_peer_addr_internal(fd, addr_buf, sizeof(addr_buf), &ss, &length);
/* it might be the same as the last one - save some DNS work */
if (strcmp(p, addr_buf_cache) == 0) {
Return the IP addr of the remote end of a socket as a string.
******************************************************************/
-const char *get_peer_addr(int fd, char addr[INET6_ADDRSTRLEN])
+const char *get_peer_addr(int fd, char *addr, size_t addr_len)
{
- return get_peer_addr_internal(fd, addr, NULL, NULL);
+ return get_peer_addr_internal(fd, addr, addr_len, NULL, NULL);
}
/*******************************************************************
*space = '\0';
- if (strncmp(client_addr(addr), buf, strlen(buf)) == 0) {
+ if (strncmp(client_addr(addr,sizeof(addr)),
+ buf, strlen(buf)) == 0) {
found = True;
break;
}
clientname = client_name();
if (strcmp(clientname, "UNKNOWN") == 0) {
- clientname = client_addr(addr);
+ clientname = client_addr(addr,sizeof(addr));
}
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
clientname = client_name();
if (strcmp(clientname, "UNKNOWN") == 0) {
- clientname = client_addr(addr);
+ clientname = client_addr(addr,sizeof(addr));
}
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
*/
if (!allow_access(lp_domain_hostsdeny(), lp_domain_hostsallow(),
- client_name(), client_addr(addr)))
+ client_name(), client_addr(addr,sizeof(addr))))
{
DEBUG(0,("get_md4pw: Workstation %s denied access to domain\n", mach_acct));
return False;
crec.bcast_msg_flags = msg_flags;
strlcpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine));
- strlcpy(crec.addr,conn?conn->client_address:client_addr(addr),
+ strlcpy(crec.addr,conn?conn->client_address:client_addr(addr,sizeof(addr)),
sizeof(crec.addr));
dbuf.dptr = (uint8 *)&crec;
lp_hostsdeny(-1))) {
/* send a negative session response "not listening on calling name" */
static unsigned char buf[5] = {0x83, 0, 0, 1, 0x81};
- DEBUG( 1, ( "Connection denied from %s\n", client_addr(addr) ) );
+ DEBUG( 1, ( "Connection denied from %s\n",
+ client_addr(addr,sizeof(addr)) ) );
(void)send_smb(smbd_server_fd(),(char *)buf);
exit_server_cleanly("connection denied");
}
/* this is needed so that we get decent entries
in smbstatus for port 445 connects */
- set_remote_machine_name(get_peer_addr(smbd_server_fd(),remaddr),
- False);
+ set_remote_machine_name(get_peer_addr(smbd_server_fd(),
+ remaddr,
+ sizeof(remaddr)),
+ false);
/* Reset the state of the random
* number generation system, so
add_session_user(user);
- safe_strcpy(conn->client_address, client_addr(addr),
+ safe_strcpy(conn->client_address, client_addr(addr,sizeof(addr)),
sizeof(conn->client_address)-1);
conn->num_files_open = 0;
conn->lastused = conn->lastused_count = time(NULL);
}
DEBUG(0,("%s (%s) couldn't find service %s\n",
- get_remote_machine_name(), client_addr(addr), service));
+ get_remote_machine_name(),
+ client_addr(addr,sizeof(addr)),
+ service));
*status = NT_STATUS_BAD_NETWORK_NAME;
return NULL;
}
hostname = client_name();
if (strcmp(hostname, "UNKNOWN") == 0) {
- hostname = client_addr(addr);
+ hostname = client_addr(addr,sizeof(addr));
}
fstrcpy(sessionid.username, vuser->user.unix_name);
sessionid.uid = vuser->uid;
sessionid.gid = vuser->gid;
fstrcpy(sessionid.remote_machine, get_remote_machine_name());
- fstrcpy(sessionid.ip_addr_str, client_addr(addr));
+ fstrcpy(sessionid.ip_addr_str, client_addr(addr,sizeof(addr)));
sessionid.connect_start = time(NULL);
if (!smb_pam_claim_session(sessionid.username, sessionid.id_str,
#endif
if (lp_reset_on_zero_vc()) {
connections_forall(shutdown_other_smbds,
- CONST_DISCARD(void *,client_addr(addr)));
+ CONST_DISCARD(void *,
+ client_addr(addr,sizeof(addr))));
}
}
{
if (inetd_server) {
char addr[INET6_ADDRSTRLEN];
- return get_peer_addr(1,addr);
+ return get_peer_addr(1,addr,sizeof(addr));
}
return getenv("REMOTE_ADDR");
}