From c1fff9fbf863e7124108938af80db2d74fb47311 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 2 Jan 2025 18:11:39 +0100 Subject: [PATCH] config null check bool verify ssl --- src/kds_s2000w_config.c | 25 ++++--- src/kds_s2000w_net.conf | 4 +- tests/kds_s2000w_read_config_tests.c | 93 +++++++++++------------- tests/kds_s2000w_read_config_tests.h | 5 +- tests/kds_s2000w_read_config_tests_run.c | 9 ++- 5 files changed, 68 insertions(+), 68 deletions(-) diff --git a/src/kds_s2000w_config.c b/src/kds_s2000w_config.c index bc01ccd..6345ce1 100644 --- a/src/kds_s2000w_config.c +++ b/src/kds_s2000w_config.c @@ -42,48 +42,53 @@ const char* read_config_file(const char* filename) return config_string; } -program_config* load_config(const char* config_stream) +program_config* load_config(const char* config_string) { program_config* config = malloc(sizeof(program_config)); - config->scanner_url = NULL; - config->username = NULL; + config->scanner_url = malloc(sizeof(char)); + *config->scanner_url = '\0'; + config->username = malloc(sizeof(char)); + *config->username = '\0'; config->heartbeat = 1; config->ssl_verify = 0; + if (config_string == NULL) + return config; + cfg_t* cfg = NULL; char* value_str = NULL; size_t str_length = 0; - if (strlen(config_stream) <= 0) + if (strlen(config_string) <= 0) return config; cfg_opt_t opts[] = { CFG_STR("username", "", CFGF_NONE), CFG_STR("scanner_url", "", CFGF_NONE), - CFG_INT("heartbeat_seconds", 0, CFGF_NONE), - CFG_INT("ssl_verify", 0, CFGF_NONE), + CFG_INT("heartbeat_seconds", 1, CFGF_NONE), + CFG_BOOL("ssl_verify", 0, CFGF_NONE), CFG_END() }; cfg = cfg_init(opts, 0); - cfg_parse_buf(cfg, config_stream); + cfg_parse_buf(cfg, config_string); value_str = cfg_getstr(cfg, "scanner_url"); str_length = strlen(value_str) + 1; - config->scanner_url = malloc(sizeof(char) * str_length); + config->scanner_url = realloc(config->scanner_url, sizeof(char) * str_length); memcpy(config->scanner_url, value_str, str_length); value_str = cfg_getstr(cfg, "username"); str_length = strlen(value_str) + 1; - config->username = malloc(sizeof(char) * str_length); + config->username = realloc(config->username, sizeof(char) * str_length); memcpy(config->username, value_str, str_length); config->heartbeat = cfg_getint(cfg, "heartbeat_seconds"); if (config->heartbeat < 1) config->heartbeat = 1; - config->ssl_verify = cfg_getint(cfg, "ssl_verify"); + config->ssl_verify = cfg_getbool(cfg, "ssl_verify"); cfg_free(cfg); cfg = NULL; diff --git a/src/kds_s2000w_net.conf b/src/kds_s2000w_net.conf index 29ba13e..3168d2d 100644 --- a/src/kds_s2000w_net.conf +++ b/src/kds_s2000w_net.conf @@ -2,5 +2,5 @@ scanner_url = "https://scanner.example.com" username = "muster" # Scanner heart beat is by default 1 seconds before check next scan status, # heartbeat_seconds = 1 -# SSL Verification default 0 (OFF) -# ssl_verify = 1 \ No newline at end of file +# SSL Verification (default: false) +# ssl_verify = true \ No newline at end of file diff --git a/tests/kds_s2000w_read_config_tests.c b/tests/kds_s2000w_read_config_tests.c index 602c295..7f03aee 100644 --- a/tests/kds_s2000w_read_config_tests.c +++ b/tests/kds_s2000w_read_config_tests.c @@ -11,6 +11,34 @@ void __wrap_wait_a_second() return; } +void kds_s2000w_config_null() +{ + program_config* config = load_config(NULL); + + assert_non_null(config); + assert_string_equal(config->scanner_url, ""); + assert_string_equal(config->username, ""); + assert_int_equal(config->heartbeat, 1); + assert_int_equal(config->ssl_verify, 0); + + free_config(config); + config = NULL; +} + +void kds_s2000w_config_read_empty_config() +{ + program_config* config = load_config(""); + + assert_non_null(config); + assert_string_equal(config->scanner_url, ""); + assert_string_equal(config->username, ""); + assert_int_equal(config->heartbeat, 1); + assert_int_equal(config->ssl_verify, 0); + + free_config(config); + config = NULL; +} + void kds_s2000w_config_read_parameter() { const char* input_stream = " scanner_url = http://scanner.example.com \n"; @@ -19,11 +47,7 @@ void kds_s2000w_config_read_parameter() assert_string_equal(config->scanner_url, "http://scanner.example.com"); - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); + free_config(config); config = NULL; } @@ -35,11 +59,7 @@ void kds_s2000w_config_read_parameters_without_trim() assert_string_equal(config->scanner_url, "http://scanner.example.com"); - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); + free_config(config); config = NULL; } @@ -52,70 +72,43 @@ void kds_s2000w_config_multiple_parameters() assert_string_equal(config->scanner_url, "http://scanner.example.com"); assert_string_equal(config->username, "Mustermann"); - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); + free_config(config); config = NULL; } -void kds_s2000w_config_read_empty_config() -{ - const char* input_stream = ""; - - program_config* config = load_config(input_stream); - - assert_null(config->scanner_url); - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); - config = NULL; -} - -void kds_s200w_config_default_heartbeat() +void kds_s200w_config_heartbeat_five_seconds() { - const char* input_stream = ""; + const char* input_stream = "heartbeat_seconds = 5\n"; program_config* config = load_config(input_stream); - assert_int_equal(config->heartbeat, 1); + assert_int_equal(config->heartbeat, 5); - free(config); + free_config(config); config = NULL; } -void kds_s200w_config_default_heartbeat_five_seconds() +void kds_s200w_config_default_heartbeat_zero_set_default() { - const char* input_stream = "heartbeat_seconds = 5\n"; + const char* input_stream = "heartbeat_seconds = 0\n"; program_config* config = load_config(input_stream); - assert_int_equal(config->heartbeat, 5); + assert_int_equal(config->heartbeat, 1); - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); + free_config(config); config = NULL; } -void kds_s200w_config_default_heartbeat_zero_set_default() +void kds_s200w_config_ssl_verify_on() { - const char* input_stream = "heartbeat_seconds = 0\n"; + const char* input_stream = "ssl_verify = true\n"; program_config* config = load_config(input_stream); - assert_int_equal(config->heartbeat, 1); + assert_int_equal(config->ssl_verify, 1); - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); + free_config(config); config = NULL; } \ No newline at end of file diff --git a/tests/kds_s2000w_read_config_tests.h b/tests/kds_s2000w_read_config_tests.h index ae5e0f8..ac5d7f3 100644 --- a/tests/kds_s2000w_read_config_tests.h +++ b/tests/kds_s2000w_read_config_tests.h @@ -6,12 +6,13 @@ #include #include +void kds_s2000w_config_null(); void kds_s2000w_config_read_parameter(); void kds_s2000w_config_read_parameters_without_trim(); void kds_s2000w_config_multiple_parameters(); void kds_s2000w_config_read_empty_config(); -void kds_s200w_config_default_heartbeat(); -void kds_s200w_config_default_heartbeat_five_seconds(); +void kds_s200w_config_heartbeat_five_seconds(); void kds_s200w_config_default_heartbeat_zero_set_default(); +void kds_s200w_config_ssl_verify_on(); #endif \ No newline at end of file diff --git a/tests/kds_s2000w_read_config_tests_run.c b/tests/kds_s2000w_read_config_tests_run.c index e26b9d5..18e088d 100644 --- a/tests/kds_s2000w_read_config_tests_run.c +++ b/tests/kds_s2000w_read_config_tests_run.c @@ -3,13 +3,14 @@ int main() { const struct CMUnitTest read_config[] = { + cmocka_unit_test(kds_s2000w_config_null), + cmocka_unit_test(kds_s2000w_config_read_empty_config), cmocka_unit_test(kds_s2000w_config_read_parameter), cmocka_unit_test(kds_s2000w_config_read_parameters_without_trim), cmocka_unit_test(kds_s2000w_config_multiple_parameters), - cmocka_unit_test(kds_s2000w_config_read_empty_config), - cmocka_unit_test(kds_s200w_config_default_heartbeat), - cmocka_unit_test(kds_s200w_config_default_heartbeat_five_seconds), - cmocka_unit_test(kds_s200w_config_default_heartbeat_zero_set_default) + cmocka_unit_test(kds_s200w_config_heartbeat_five_seconds), + cmocka_unit_test(kds_s200w_config_default_heartbeat_zero_set_default), + cmocka_unit_test(kds_s200w_config_ssl_verify_on) }; return cmocka_run_group_tests(read_config, NULL, NULL); -- 2.39.5