diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c index 202bd9c2300e93fa2f92e72501eb5ccb25945348..36d052f50833dc4dfd5e64bde67b834d86c06398 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);