summaryrefslogtreecommitdiffstats
path: root/contrib/blacklist
diff options
context:
space:
mode:
authorlidl <lidl@FreeBSD.org>2016-10-07 02:33:45 +0000
committerlidl <lidl@FreeBSD.org>2016-10-07 02:33:45 +0000
commit706ea424763227394b542af5e9f25e941850ce8a (patch)
tree85e4bd23e65e4f37d6b83cc52e07bf1e4bac9931 /contrib/blacklist
parentf0b6c698825bccd60304f389b24ff95397e4e19f (diff)
downloadFreeBSD-src-706ea424763227394b542af5e9f25e941850ce8a.zip
FreeBSD-src-706ea424763227394b542af5e9f25e941850ce8a.tar.gz
MFC r306508: Fix blacklistd's state restoral at startup
The blacklistd daemon attempted to restore the filtering rules before the database of blocked addresses was opened, so no rules were being reloaded. Now the rules are properly recreated when the daemon is started with '-r'. This bug was fixed locally, and then sent upstream to NetBSD. This changeset is the import the NetBSD version of the change, which added debugging output to alert about a null database. Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'contrib/blacklist')
-rw-r--r--contrib/blacklist/bin/blacklistd.c10
-rw-r--r--contrib/blacklist/bin/state.c8
2 files changed, 10 insertions, 8 deletions
diff --git a/contrib/blacklist/bin/blacklistd.c b/contrib/blacklist/bin/blacklistd.c
index c16b18e..a497f9d 100644
--- a/contrib/blacklist/bin/blacklistd.c
+++ b/contrib/blacklist/bin/blacklistd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: blacklistd.c,v 1.34 2016/04/04 15:52:56 christos Exp $ */
+/* $NetBSD: blacklistd.c,v 1.35 2016/09/26 19:43:43 christos Exp $ */
/*-
* Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#include "config.h"
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: blacklistd.c,v 1.34 2016/04/04 15:52:56 christos Exp $");
+__RCSID("$NetBSD: blacklistd.c,v 1.35 2016/09/26 19:43:43 christos Exp $");
#include <sys/types.h>
#include <sys/socket.h>
@@ -473,9 +473,6 @@ main(int argc, char *argv[])
flags |= O_TRUNC;
}
- if (restore)
- rules_restore();
-
struct pollfd *pfd = NULL;
bl_t *bl = NULL;
size_t nfd = 0;
@@ -500,6 +497,9 @@ main(int argc, char *argv[])
if (state == NULL)
return EXIT_FAILURE;
+ if (restore)
+ rules_restore();
+
if (!debug) {
if (daemon(0, 0) == -1)
err(EXIT_FAILURE, "daemon failed");
diff --git a/contrib/blacklist/bin/state.c b/contrib/blacklist/bin/state.c
index eb97e97..f2622c8 100644
--- a/contrib/blacklist/bin/state.c
+++ b/contrib/blacklist/bin/state.c
@@ -1,4 +1,4 @@
-/* $NetBSD: state.c,v 1.18 2016/04/04 15:52:56 christos Exp $ */
+/* $NetBSD: state.c,v 1.19 2016/09/26 19:43:43 christos Exp $ */
/*-
* Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: state.c,v 1.18 2016/04/04 15:52:56 christos Exp $");
+__RCSID("$NetBSD: state.c,v 1.19 2016/09/26 19:43:43 christos Exp $");
#include <sys/types.h>
#include <sys/socket.h>
@@ -200,8 +200,10 @@ state_iterate(DB *db, struct conf *c, struct dbinfo *dbi, unsigned int first)
int rv;
DBT k, v;
- if (db == NULL)
+ if (db == NULL) {
+ (*lfun)(LOG_ERR, "%s: called with no database file", __func__);
return -1;
+ }
first = first ? R_FIRST : R_NEXT;
OpenPOWER on IntegriCloud