1
0
Fork 0

(svn r27913) -Fix: 'unban' console command was not handling IPv6 adresses properly

release/1.8
adf88 2017-09-10 14:02:13 +00:00
parent 016a68815d
commit f3fbf6beb8
1 changed files with 17 additions and 12 deletions

View File

@ -562,20 +562,25 @@ DEF_CONSOLE_CMD(ConUnBan)
if (argc != 2) return false; if (argc != 2) return false;
uint index = (strchr(argv[1], '.') == NULL) ? atoi(argv[1]) : 0; /* Try by IP. */
index--; uint index;
uint i = 0; for (index = 0; index < _network_ban_list.Length(); index++) {
if (strcmp(_network_ban_list[index], argv[1]) == 0) break;
for (char **iter = _network_ban_list.Begin(); iter != _network_ban_list.End(); iter++, i++) { }
if (strcmp(_network_ban_list[i], argv[1]) == 0 || index == i) {
free(_network_ban_list[i]); /* Try by index. */
_network_ban_list.Erase(iter); if (index >= _network_ban_list.Length()) {
IConsolePrint(CC_DEFAULT, "IP unbanned."); index = atoi(argv[1]) - 1U; // let it wrap
return true; }
}
if (index < _network_ban_list.Length()) {
free(_network_ban_list[index]);
_network_ban_list.Erase(_network_ban_list.Get(index));
IConsolePrint(CC_DEFAULT, "IP unbanned.");
} else {
IConsolePrint(CC_DEFAULT, "IP not in ban-list.");
} }
IConsolePrint(CC_DEFAULT, "IP not in ban-list.");
return true; return true;
} }