fix memory leak
[umurmur.git] / src / sharedmemory.c
index fd41261f49918b3a8d8fd9ca221001a4e449dd89..d6a6a0ac84681b84cd609f6077301a5d3404721f 100644 (file)
@@ -27,6 +27,7 @@ void Sharedmemory_init( int bindport, int bindport6 )
 \r
         if( ftruncate( shm_fd, shmtotal_size ) == -1 )\r
         {\r
+                       Sharedmemory_deinit();\r
             Log_fatal( "SHM_API: ftruncate : %s\n", strerror(errno));\r
             exit(EXIT_FAILURE);\r
         }\r
@@ -66,8 +67,10 @@ void Sharedmemory_update(void)
             {\r
               channel_t *channel = client_itr->channel;\r
 \r
+                               char* clientAddressString = Util_clientAddressToString( client_itr );\r
+\r
                 strncpy( shmptr->client[cc].username, client_itr->username, 120 );\r
-                strncpy( shmptr->client[cc].ipaddress, Util_clientAddressToString( client_itr ), INET6_ADDRSTRLEN - 1 );\r
+                strncpy( shmptr->client[cc].ipaddress, clientAddressString, INET6_ADDRSTRLEN - 1 );\r
                 strncpy( shmptr->client[cc].channel, channel->name, 120 );\r
 \r
                 strncpy( shmptr->client[cc].os, client_itr->os, 120 );\r
@@ -102,6 +105,7 @@ void Sharedmemory_update(void)
                 shmptr->client[cc].UDPPackets = client_itr->UDPPackets;\r
                 shmptr->client[cc].TCPPackets = client_itr->TCPPackets;\r
 \r
+                               free(clientAddressString);\r
             }\r
           cc++;\r
         }\r