From 3fa329a43141b80ea9ca1271d8a3439e39623942 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 6 Feb 2015 13:07:01 +0100 Subject: [PATCH] closed some memory leaks --- src/ban.c | 6 +++++- src/client.c | 11 +++++++++-- src/log.c | 4 +++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/ban.c b/src/ban.c index c8b8688..4cc6318 100644 --- a/src/ban.c +++ b/src/ban.c @@ -90,8 +90,12 @@ void Ban_UserBan(client_t *client, char *reason) SSLi_hash2hex(ban->hash, hexhash); + char *clientAddressString = Util_clientAddressToString(client); + Log_info_client(client, "User kickbanned. Reason: '%s' Hash: %s IP: %s Banned for: %d seconds", - ban->reason, hexhash, Util_clientAddressToString(client), ban->duration); + ban->reason, hexhash, clientAddressString, ban->duration); + + free(clientAddressString); } diff --git a/src/client.c b/src/client.c index ae49500..b3b12b7 100644 --- a/src/client.c +++ b/src/client.c @@ -834,7 +834,9 @@ int Client_read_udp(int udpsock) if (memcmp(itraddress, fromaddress, addresslength) == 0) { if (checkDecrypt(itr, encrypted, buffer, len)) { memcpy(itr->key, key, KEY_LENGTH); - Log_info_client(itr, "New UDP connection from %s on port %d", Util_clientAddressToString(itr), fromport); + char* clientAddressString = Util_clientAddressToString(itr); + Log_info_client(itr, "New UDP connection from %s on port %d", clientAddressString, fromport); + free(clientAddressString); memcpy(&itr->remote_udp, &from, sizeof(struct sockaddr_storage)); break; } @@ -848,6 +850,9 @@ int Client_read_udp(int udpsock) itr->bUDP = true; len -= 4; /* Adjust for crypt header */ msgType = (UDPMessageType_t)((buffer[0] >> 5) & 0x7); + + char *clientAddressString = NULL; + switch (msgType) { case UDPVoiceSpeex: case UDPVoiceCELTAlpha: @@ -862,7 +867,9 @@ int Client_read_udp(int udpsock) Client_send_udp(itr, buffer, len); break; default: - Log_debug("Unknown UDP message type from %s port %d", Util_clientAddressToString(itr), fromport); + clientAddressString = Util_clientAddressToString(itr); + Log_debug("Unknown UDP message type from %s port %d", clientAddressString, fromport); + free(clientAddressString); break; } diff --git a/src/log.c b/src/log.c index 61a92d2..91ec5b0 100644 --- a/src/log.c +++ b/src/log.c @@ -191,11 +191,13 @@ void Log_info_client(client_t *client, const char *logstring, ...) offset += vsnprintf(&buf[offset], STRSIZE - offset, logstring, argp); va_end(argp); + char *clientAddressString = Util_clientAddressToString(client); offset += snprintf(&buf[offset], STRSIZE - offset, " - [%d] %s@%s:%d", client->sessionId, client->username == NULL ? "" : client->username, - Util_clientAddressToString(client), + clientAddressString, Util_clientAddressToPortTCP(client)); + free(clientAddressString); if (termprint) fprintf(stderr, "%s\n", buf); -- 2.30.2