Skip to content

Commit 1f7a7cc

Browse files
committed
Add error-checking for valid IP
1 parent 50e9e54 commit 1f7a7cc

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

  • source/shared_lib/sources/platform/posix

source/shared_lib/sources/platform/posix/socket.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2413,8 +2413,10 @@ void ServerSocket::bind(int port) {
24132413
addr.sin_addr.s_addr= inet_addr(this->bindSpecificAddress.c_str());
24142414
}
24152415
else {
2416-
addr.sin_addr.s_addr= this->bindAddress == "" ? INADDR_ANY : inet_addr(this->bindAddress.c_str());
2416+
if (inet_pton(AF_INET, this->bindAddress == "" ? INADDR_ANY : this->bindAddress.c_str(), &addr.sin_addr.s_addr) <= 0)
2417+
perror("inet_pton:");
24172418
}
2419+
24182420
addr.sin_port= htons(port);
24192421
addr.sin_zero[0] = 0;
24202422

@@ -2425,14 +2427,14 @@ void ServerSocket::bind(int port) {
24252427
#else
24262428
int opt_result = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val));
24272429
#endif
2430+
char szBuf[8096] = {};
24282431

24292432
int err= ::bind(sock, reinterpret_cast<sockaddr*>(&addr), sizeof(addr));
24302433
if(err < 0) {
2431-
char szBuf[8096]="";
2432-
snprintf(szBuf, 8096,"In [%s::%s] Error binding socket sock = " PLATFORM_SOCKET_FORMAT_TYPE ", address [%s] port = %d err = %d, error = %s opt_result = %d\n",__FILE__,__FUNCTION__,sock,this->bindSpecificAddress.c_str(),port,err,getLastSocketErrorFormattedText().c_str(),opt_result);
2434+
snprintf(szBuf, sizeof szBuf,"In [%s::%s] Error binding socket sock = " PLATFORM_SOCKET_FORMAT_TYPE ", address [%s] port = %d err = %d, error = %s opt_result = %d\n",__FILE__,__FUNCTION__,sock,this->bindSpecificAddress.c_str(),port,err,getLastSocketErrorFormattedText().c_str(),opt_result);
24332435
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"%s",szBuf);
24342436

2435-
snprintf(szBuf, 8096,"Error binding socket sock = " PLATFORM_SOCKET_FORMAT_TYPE ", address [%s] port = %d err = %d, error = %s\n",sock,this->bindSpecificAddress.c_str(),port,err,getLastSocketErrorFormattedText().c_str());
2437+
snprintf(szBuf, sizeof szBuf,"Error binding socket sock = " PLATFORM_SOCKET_FORMAT_TYPE ", address [%s] port = %d err = %d, error = %s\n",sock,this->bindSpecificAddress.c_str(),port,err,getLastSocketErrorFormattedText().c_str());
24362438
throw megaglest_runtime_error(szBuf);
24372439
}
24382440
portBound = true;

0 commit comments

Comments
 (0)