diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 097a6b028dc05722dd1800e9a72a758e9cb3779f..ef797ff3d6b5c4f234dd08526e5a99171001d4b7 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -3024,7 +3024,8 @@ static void ctrl_thread(void* arg) ip_addr=0; /* TODO: IPv6 this here lookup */ if(startup->options&FTP_OPT_LOOKUP_PASV_IP - && (host=gethostbyname(server_host_name()))!=NULL) + && (host=gethostbyname(server_host_name()))!=NULL + && host->h_addr_list[0] != NULL) ip_addr=ntohl(*((ulong*)host->h_addr_list[0])); if(ip_addr==0 && (ip_addr=startup->pasv_ip_addr.s_addr)==0) ip_addr=ntohl(pasv_addr.in.sin_addr.s_addr); diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 95de34bdd3166dda4bbb2b59797753983ee413d4..896b91961e3364889145452e9417a89082382bfe 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -943,6 +943,9 @@ static u_long resolve_ip(const char *inaddr) if((host=gethostbyname(inaddr))==NULL) return((u_long)INADDR_NONE); + if(host->h_addr_list[0] == NULL) + return (u_long)INADDR_NONE; + return(*((ulong*)host->h_addr_list[0])); } diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index a699d961a21211679d1df3c662e2711e1def53c0..0aeb7a3a2add8633a68dc86d5a68dc596cdb936c 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -381,6 +381,8 @@ u_long resolve_ip(char *addr) return(inet_addr(addr)); if((host=gethostbyname(addr))==NULL) return((u_long)INADDR_NONE); + if(host->h_addr_list[0] == NULL) + return (u_long)INADDR_NONE; return(*((ulong*)host->h_addr_list[0])); }