commit 1d79047162f78ce0c0002049ab01fb6bd9de32b8
parent 7b74cc2166ad8898ccb854dceddf8a49f9c3fb67
Author: Naveen Narayanan <zerous@nocebo.space>
Date:   Sun, 24 Oct 2021 17:19:17 +0200
Check for duplicates in black/whitelist
Diffstat:
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/main.c b/main.c
@@ -219,6 +219,12 @@ main(int argc, char **argv)
 		ret = fscanf(fp, "%s\n", bf);
 		if (ret == EOF)
 			break;
+		if (!isip(bf))
+			errx(1, "malformed ip in blacklist");
+		SLIST_FOREACH(a, &head, attackers)
+			if (!strcmp(a->ip, bf))
+				errx(1, "duplicate entry found in %s",
+				     black_list);
 		a = malloc(sizeof(struct attacker));
 		if (!a)
 			err(1, "malloc failed");
@@ -226,8 +232,6 @@ main(int argc, char **argv)
 		 * Attackers generated from blacklist
 		 * will have nban and last set to 0
 		 */
-		if (!isip(bf))
-			errx(1, "malformed ip in blacklist");
 		strcpy(a->ip, bf);
 		a->list = BLACK;
 		fw_block(a->ip);
@@ -242,6 +246,12 @@ main(int argc, char **argv)
 		ret = fscanf(fp, "%s\n", bf);
 		if (ret == EOF)
 			break;
+		if (!isip(bf))
+			errx(1, "malformed ip in whitelist");
+		SLIST_FOREACH(a, &head, attackers)
+			if (!strcmp(a->ip, bf))
+				errx(1, "duplicate entry found in %s",
+				     white_list);
 		a = malloc(sizeof(struct attacker));
 		if (!a)
 			err(1, "malloc failed");
@@ -249,8 +259,6 @@ main(int argc, char **argv)
 		 * Attackers generated from whitelist
 		 * will have nban and last set to 0
 		 */
-		if (!isip(bf))
-			errx(1, "malformed ip in whitelist");
 		strcpy(a->ip, bf);
 		a->list = WHITE;
 		SLIST_INSERT_HEAD(&head, a, attackers);