diff --git a/src/network/network.cpp b/src/network/network.cpp index fabc3bdb9f..2c7692d9d6 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -1202,6 +1202,9 @@ bool Network::ProcessConnection(NetworkConnection& connection) case NETWORK_READPACKET_SUCCESS: // done reading in packet ProcessPacket(connection, connection.InboundPacket); + if (connection.Socket == nullptr) { + return false; + } break; case NETWORK_READPACKET_MORE_DATA: // more data required to be read @@ -1600,6 +1603,7 @@ void Network::Client_Handle_MAP(NetworkConnection& connection, NetworkPacket& pa if (data == NULL) { log_warning("Failed to decompress data sent from server."); + Close(); return; } } else { diff --git a/src/util/util.c b/src/util/util.c index 0536be40b3..f32fc34e13 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -409,6 +409,10 @@ unsigned char *util_zlib_inflate(unsigned char *data, size_t data_in_size, size_ log_error("Your build is shipped with broken zlib. Please use the official build."); free(buffer); return NULL; + } else if (ret < 0) { + log_error("Error uncompressing data."); + free(buffer); + return NULL; } ret = uncompress(buffer, &out_size, data, data_in_size); } while (ret != Z_OK);