diff --git a/main.c b/main.c
index d94c50d..0feacdc 100644
--- a/main.c
+++ b/main.c
@@ -305,11 +305,11 @@ void process_line(char* line, void* cbData)
if (check_already_banned_ip)
for (size_t j = 0; j < rules->banned_ip_count; j++)
{
- if (strlen(rules->banned_ips[j]) < 5)
+ if (strlen(rules->banned_ips[j]) < 2)
{
for (size_t k = 0; k < rules->banned_ip_count; k++)
{
- printf("rules->banned_ips[%lu] = \"%s\" (#%s)\n", k, rules->banned_ips[k], str_to_hex(rules->banned_ips[k]));
+ printf("rules->banned_ips[%lu] = \"%s\" (#%s) x %d\n", k, rules->banned_ips[k], str_to_hex(rules->banned_ips[k]), rules->banned_ip_hits[k * sizeof(int)]);
}
printf("ASSERT: Broken rule #%lu: \"%s\" (#%s)\n", j, rules->banned_ips[j], str_to_hex(rules->banned_ips[j]));
abort();
@@ -327,6 +327,9 @@ void process_line(char* line, void* cbData)
abort();
}
+ rules->banned_ip_hits[j * sizeof(int)]++;
+ fprintf(stderr, "DBG CHK: %s -> %d hits\n", rules->banned_ips[j], rules->banned_ip_hits[j * sizeof(int)]);
+
free(ip);
return;
}
@@ -354,12 +357,11 @@ void process_line(char* line, void* cbData)
rules->banned_ip_hits = grow_int_array(rules->banned_ip_hits, rules->banned_ip_size);
}
- rules->banned_ips[rules->banned_ip_count][strcspn(rules->banned_ips[rules->banned_ip_count], "\n")] = 0;
- rules->banned_ips[rules->banned_ip_count + 1] = nullptr;
rules->banned_ips[rules->banned_ip_count] = ip;
- rules->banned_ip_hits[rules->banned_ip_count]++;
- fprintf(stderr, "DBG: %s -> %d hits\n", rules->banned_ips[rules->banned_ip_count], rules->banned_ip_hits[rules->banned_ip_count]);
+ rules->banned_ip_hits[rules->banned_ip_count * sizeof(int)] = 1;
+ fprintf(stderr, "DBG PTN: %s -> %d hits\n", rules->banned_ips[rules->banned_ip_count], rules->banned_ip_hits[rules->banned_ip_count * sizeof(int)]);
rules->banned_ip_count++;
+
if (print_bans)
printf("[Bans=%6lu] %15s matched pattern %4d (\"%s\"): %s\n", rules->banned_ip_count, ip, i, rules->patterns[i], line);
@@ -502,8 +504,8 @@ int main(int argc, char* argv[])
rules.allowed_ips = read_lines(allowed_ips_path);
rules.banned_ip_size = 8;
rules.banned_ip_count = 0;
- rules.banned_ips = xmalloc(sizeof(char**) * rules.banned_ip_size);
- rules.banned_ip_hits = xmalloc(sizeof(int*) * rules.banned_ip_size);
+ rules.banned_ips = xmalloc(rules.banned_ip_size * sizeof(char**));
+ rules.banned_ip_hits = xmalloc(rules.banned_ip_size * sizeof(int));
//rules.bannedIps[0] = ;
if (dump_patterns)
@@ -531,14 +533,7 @@ int main(int argc, char* argv[])
for (int i = 0; i < rules.banned_ip_count; i++)
{
printf("[BAN %4d] %s: %d hits\n", i, rules.banned_ips[i], rules.banned_ip_hits[i * sizeof(int)]);
- free(rules.banned_ips[i]);
}
- // for (int i = 0; rules.banned_ips[i] != NULL; i++)
- // {
- // printf("[BANNED IP %4d] %s\n", i, rules.banned_ips[i]);
- // free(rules.banned_ips[i]);
- // }
- free(rules.banned_ips);
for (int i = 0; rules.patterns[i] != NULL; i++)
{
@@ -546,7 +541,7 @@ int main(int argc, char* argv[])
}
free(rules.patterns);
free(rules.allowed_ips);
- for (int i = 0; rules.banned_ips[i] != NULL; i++)
+ for (int i = 0; i < rules.banned_ip_count; i++)
{
free(rules.banned_ips[i]);
}
|