diff --git a/src/SFML/Network/IpAddress.cpp b/src/SFML/Network/IpAddress.cpp index e322f2c..eebe176 100644 --- a/src/SFML/Network/IpAddress.cpp +++ b/src/SFML/Network/IpAddress.cpp @@ -35,8 +35,8 @@ namespace // Helper function for converting a SFML address to a CSFML one sfIpAddress fromSFMLAddress(sf::IpAddress address) { - sfIpAddress result; - strncpy(result.address, address.toString().c_str(), 16); + sfIpAddress result = {0}; + strncpy(result.address, address.toString().c_str(), 15); return result; } diff --git a/src/SFML/Network/TcpSocket.cpp b/src/SFML/Network/TcpSocket.cpp index 799e21a..2582f66 100644 --- a/src/SFML/Network/TcpSocket.cpp +++ b/src/SFML/Network/TcpSocket.cpp @@ -75,7 +75,7 @@ sfIpAddress sfTcpSocket_getRemoteAddress(const sfTcpSocket* socket) CSFML_CHECK_RETURN(socket, result); sf::IpAddress address = socket->This.getRemoteAddress(); - strncpy(result.address, address.toString().c_str(), 16); + strncpy(result.address, address.toString().c_str(), 15); return result; } diff --git a/src/SFML/Network/UdpSocket.cpp b/src/SFML/Network/UdpSocket.cpp index 5237827..3b4e96c 100644 --- a/src/SFML/Network/UdpSocket.cpp +++ b/src/SFML/Network/UdpSocket.cpp @@ -113,7 +113,10 @@ sfSocketStatus sfUdpSocket_receive(sfUdpSocket* socket, void* data, size_t size, *received = sizeReceived; if (remoteAddress) - strncpy(remoteAddress->address, address.toString().c_str(), 16); + { + *remoteAddress = sfIpAddress_None; + strncpy(remoteAddress->address, address.toString().c_str(), 15); + } if (remotePort) *remotePort = port; @@ -149,7 +152,10 @@ sfSocketStatus sfUdpSocket_receivePacket(sfUdpSocket* socket, sfPacket* packet, return static_cast(status); if (remoteAddress) - strncpy(remoteAddress->address, address.toString().c_str(), 16); + { + *remoteAddress = sfIpAddress_None; + strncpy(remoteAddress->address, address.toString().c_str(), 15); + } if (remotePort) *remotePort = port;