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);
}
list_iterate(itr, &banlist) {
ban = list_get_entry(itr, ban_t, node);
#ifdef DEBUG
+ char hexhash[41];
SSLi_hash2hex(ban->hash, hexhash);
+ char *addressString = Util_addressToString(&ban->address);
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, addressString,
ban->time + ban->duration - time(NULL));
+ free(addressString);
#endif
/* Duration of 0 = forever */
if (ban->duration != 0 && ban->time + ban->duration - time(NULL) <= 0) {
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)
ban = list_get_entry(itr, ban_t, node);
SSLi_hash2hex(ban->hash, hexhash);
- fprintf(file, "%s,%s,%d,%ld,%d,%s,%s\n", hexhash, Util_addressToString(&ban->address),ban->mask, (long int)ban->time, ban->duration, ban->name, ban->reason);
+ char *addressString = Util_addressToString(&ban->address);
+ fprintf(file, "%s,%s,%d,%ld,%d,%s,%s\n", hexhash, addressString,ban->mask, (long int)ban->time, ban->duration, ban->name, ban->reason);
+ free(addressString);
}
fclose(file);
banlist_changed = false;