From 7270604440268bb17b39ae734ff33003a67c8343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= Date: Tue, 20 Jul 2021 19:34:42 +0200 Subject: [PATCH] Check parsed resconf values Add 'attempts' check, fix 'ndots' data. Create a bunch of verification functions and check parsed values, not just return codes. --- lib/irs/tests/resconf_test.c | 46 ++++++++++++++++++-- lib/irs/tests/testdata/options-attempts.conf | 10 +++++ lib/irs/tests/testdata/options-ndots.conf | 2 +- 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 lib/irs/tests/testdata/options-attempts.conf diff --git a/lib/irs/tests/resconf_test.c b/lib/irs/tests/resconf_test.c index 6951758..ce94345 100644 --- a/lib/irs/tests/resconf_test.c +++ b/lib/irs/tests/resconf_test.c @@ -45,6 +45,43 @@ setup_test() { assert_return_code(chdir(TESTS), 0); } +static isc_result_t +check_number(unsigned int n, unsigned int expected) { + return ((n == expected) ? ISC_R_SUCCESS : ISC_R_BADNUMBER); +} + +static isc_result_t +check_attempts(irs_resconf_t *resconf) { + return (check_number(irs_resconf_getattempts(resconf), 4)); +} + +static isc_result_t +check_timeout(irs_resconf_t *resconf) { + return (check_number(irs_resconf_gettimeout(resconf), 1)); +} + +static isc_result_t +check_ndots(irs_resconf_t *resconf) { + return (check_number(irs_resconf_getndots(resconf), 2)); +} + +static isc_result_t +check_options(irs_resconf_t *resconf) { + if (irs_resconf_getattempts(resconf) != 3) { + return ISC_R_BADNUMBER; /* default value only */ + } + + if (irs_resconf_getndots(resconf) != 2) { + return ISC_R_BADNUMBER; + } + + if (irs_resconf_gettimeout(resconf) != 1) { + return ISC_R_BADNUMBER; + } + + return (ISC_R_SUCCESS); +} + /* test irs_resconf_load() */ static void irs_resconf_load_test(void **state) { @@ -64,15 +101,18 @@ irs_resconf_load_test(void **state) { ISC_R_SUCCESS }, { "testdata/nameserver-v6-scoped.conf", ISC_R_SUCCESS, NULL, ISC_R_SUCCESS }, + { "testdata/options-attempts.conf", ISC_R_SUCCESS, + check_attempts, ISC_R_SUCCESS }, { "testdata/options-debug.conf", ISC_R_SUCCESS, NULL, ISC_R_SUCCESS }, - { "testdata/options-ndots.conf", ISC_R_SUCCESS, NULL, + { "testdata/options-ndots.conf", ISC_R_SUCCESS, check_ndots, ISC_R_SUCCESS }, - { "testdata/options-timeout.conf", ISC_R_SUCCESS, NULL, + { "testdata/options-timeout.conf", ISC_R_SUCCESS, check_timeout, ISC_R_SUCCESS }, { "testdata/options-unknown.conf", ISC_R_SUCCESS, NULL, ISC_R_SUCCESS }, - { "testdata/options.conf", ISC_R_SUCCESS, NULL, ISC_R_SUCCESS }, + { "testdata/options.conf", ISC_R_SUCCESS, check_options, + ISC_R_SUCCESS }, { "testdata/options-bad-ndots.conf", ISC_R_RANGE, NULL, ISC_R_SUCCESS }, { "testdata/options-empty.conf", ISC_R_UNEXPECTEDEND, NULL, diff --git a/lib/irs/tests/testdata/options-attempts.conf b/lib/irs/tests/testdata/options-attempts.conf new file mode 100644 index 0000000..4538643 --- /dev/null +++ b/lib/irs/tests/testdata/options-attempts.conf @@ -0,0 +1,10 @@ +# Copyright (C) Internet Systems Consortium, Inc. ("ISC") +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at https://mozilla.org/MPL/2.0/. +# +# See the COPYRIGHT file distributed with this work for additional +# information regarding copyright ownership. + +options attempts:4 diff --git a/lib/irs/tests/testdata/options-ndots.conf b/lib/irs/tests/testdata/options-ndots.conf index 5d18d26..f37c712 100644 --- a/lib/irs/tests/testdata/options-ndots.conf +++ b/lib/irs/tests/testdata/options-ndots.conf @@ -9,4 +9,4 @@ # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. -option ndots:2 +options ndots:2 -- 2.35.3