From cb2db2f1c759c60849b66dabf8ee03c9cdfb2dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Sun, 7 Nov 2010 01:37:06 +0200 Subject: all: check error for sqdb_open and adb_open so we don't crash on startup if essential files are missing. fixes #454 --- src/squark-auth-snmp.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/squark-auth-snmp.c') diff --git a/src/squark-auth-snmp.c b/src/squark-auth-snmp.c index aa45c73..40ef6b5 100644 --- a/src/squark-auth-snmp.c +++ b/src/squark-auth-snmp.c @@ -26,6 +26,7 @@ #include #include +#include "config.h" #include "blob.h" #include "addr.h" #include "authdb.h" @@ -1063,13 +1064,16 @@ int main(int argc, char **argv) struct timeval timeout; sockaddr_any addr; fd_set fdset; - int opt, fds, block, i; + int opt, fds, block, i, rc = 1; setenv("MIBS", "", 1); init_snmp("squark-auth"); - while ((opt = getopt(argc, argv, "c:r:i:R:v:f:T:K")) != -1) { + while ((opt = getopt(argc, argv, "Vc:r:i:R:v:f:T:K")) != -1) { switch (opt) { + case 'V': + fprintf(stderr, "squark-auth-snmp %s\n", squark_version); + return 0; case 'c': snmp_community = optarg; break; @@ -1104,8 +1108,15 @@ int main(int argc, char **argv) return 1; } - sqdb_open(&db, "/var/lib/squark/squark.db"); - authdb_open(&adb, &adbc, &db); + if (sqdb_open(&db, squark_dbname) < 0) { + fprintf(stderr, "%s: failed to open squarkdb\n", + squark_dbname); + goto err_sqdb; + } + if (authdb_open(&adb, &adbc, &db) < 0) { + fprintf(stderr, "Failed to initialize authdb\n"); + goto err_adb; + } if (l2_root == NULL) l2_root = l3_root; @@ -1145,8 +1156,12 @@ int main(int argc, char **argv) } else snmp_timeout(); } + rc = 0; + authdb_close(&adb); +err_adb: sqdb_close(&db); +err_sqdb: - return 0; + return rc; } -- cgit v1.2.3