fixed debug logging
[umurmur.git] / src / ban.c
index 4ff47c84232bc870b7d143f588c344d388ff1c95..c7ed670631273e616d8a2555b4050489a892256a 100644 (file)
--- 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);
 }
 
 
@@ -103,9 +107,10 @@ void Ban_pruneBanned()
        list_iterate(itr, &banlist) {
                ban = list_get_entry(itr, ban_t, node);
 #ifdef DEBUG
+               char hexhash[41];
                SSLi_hash2hex(ban->hash, hexhash);
                Log_debug("BL: User %s Reason: '%s' Hash: %s IP: %s Time left: %d",
-                       ban->name, ban->reason, hexhash, Util_addressToString(&ban->address)),
+                       ban->name, ban->reason, hexhash, Util_addressToString(&ban->address),
                        ban->time + ban->duration - time(NULL));
 #endif
                /* Duration of 0 = forever */
@@ -144,7 +149,8 @@ bool_t Ban_isBannedAddr(struct sockaddr_storage *address)
                ban = list_get_entry(itr, ban_t, node);
                if (ban->address.ss_family == address->ss_family) {
                        if (address->ss_family == AF_INET) {
-                               uint32_t a1, a2, mask = 2 ^ ban->mask;
+                               uint32_t a1, a2, mask;
+                               mask = (ban->mask == 32) ? UINT32_MAX : (1u << ban->mask) - 1;
                                a1 = (uint32_t)((struct sockaddr_in *)&ban->address)->sin_addr.s_addr & mask;
                                a2 = (uint32_t)((struct sockaddr_in *)address)->sin_addr.s_addr & mask;
                                if (a1 == a2)