From 31d46bf88bef2c75cd7e3da2eb4db74892c859ad Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 8 May 2008 00:32:10 +0000
Subject: [PATCH] Fixes to smb_netaddr_type(): 1. Wasn't detecting FTN
 addresses correctly (would return NET_INTERNET, always) 2. Wouldn't detect
 name@<ip_address> as an Internet address (NET_UNKNOWN)

---
 src/smblib/smbstr.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index 202bd9c230..36d052f508 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -315,6 +315,8 @@ ushort SMBCALL smb_netaddr_type(const char* str)
 {
 	char*	p;
 	char*	tp;
+	char*	firstdot;
+	char*	lastdot;
 
 	if((p=strchr(str,'@'))==NULL)
 		return(NET_NONE);
@@ -324,14 +326,17 @@ ushort SMBCALL smb_netaddr_type(const char* str)
 	if(*p==0)
 		return(NET_UNKNOWN);
 
-	if(isalpha(*p) && strchr(p,'.')==NULL)
+	firstdot=strchr(p,'.');
+	lastdot=strrchr(p,'.');
+
+	if(isalpha(*p) && firstdot==NULL)
 		return(NET_QWK);
 
 	for(tp=p;*tp;tp++) {
 		if(!isdigit(*tp) && *tp!=':' && *tp!='/' && *tp!='.')
 			break;
 	}
-	if(isdigit(*p) && *tp)
+	if(isdigit(*p) && *tp==0 && firstdot==lastdot)
 		return(NET_FIDO);
 	if(isalnum(*p))
 		return(NET_INTERNET);
-- 
GitLab