From a65d6e54f2ae42e7b24b3e5813bb353377122eb7 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 6 Mar 2025 19:34:49 +0100 Subject: [PATCH] fix tests and config memory leak --- CMakeLists.txt | 4 +++- src/kds_s2000w_config.c | 7 ++++++- src/kds_s2000w_handler.c | 2 ++ tests/kds_s2000w_client_mock.c | 11 +++++++++++ tests/kds_s2000w_client_mock.h | 2 +- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 094d19f..6dd792b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,9 @@ IF (RUN_TESTS) -Wall \ -g \ -fsanitize=address \ --Wl,--wrap,kds_s2000w_client_open_session,\ +-Wl,--wrap,kds_s2000w_client_init,\ +--wrap,kds_s2000w_client_free,\ +--wrap,kds_s2000w_client_open_session,\ --wrap,kds_s2000w_client_close_session,\ --wrap,kds_s2000w_client_start_scan,\ --wrap,kds_s2000w_client_stop_scan,\ diff --git a/src/kds_s2000w_config.c b/src/kds_s2000w_config.c index 5d24782..10f5919 100644 --- a/src/kds_s2000w_config.c +++ b/src/kds_s2000w_config.c @@ -18,6 +18,10 @@ void _kds_s2000w_config_copy_string_to_config_value(cfg_t* cfg, const char* key, char* kds_s2000w_config_read(const char* filename) { FILE* config_file = fopen(filename, "r"); + + if (config_file == NULL) + return NULL; + fseek(config_file, 0, SEEK_END); size_t config_size = ftell(config_file); rewind(config_file); @@ -39,6 +43,7 @@ program_config* kds_s2000w_config_load(char* config_string) config->username = malloc(sizeof(char)); *config->scanner_url = 0; *config->username = 0; + config->log_level = 0; config->heartbeat = 1; config->ssl_verify = 0; @@ -49,8 +54,8 @@ program_config* kds_s2000w_config_load(char* config_string) return config; cfg_opt_t opts[] = { - CFG_STR("username", "", CFGF_NONE), CFG_STR("scanner_url", "", CFGF_NONE), + CFG_STR("username", "", CFGF_NONE), CFG_INT("default_log_level", 0, CFGF_NONE), CFG_INT("heartbeat_seconds", 1, CFGF_NONE), CFG_BOOL("ssl_verify", 0, CFGF_NONE), diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index d41664f..d082cc1 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -37,6 +37,8 @@ uint32_t _kds_s2000w_handler_find_first_data_byte(imagedata* image) void _kds_s2000w_handler_load_config() { + kds_s2000w_debug_printf(ALL, "kds_s2000w_handler_load_config"); + char* config_stream = kds_s2000w_config_read(CONFIG_FILE); program_config* config = kds_s2000w_config_load(config_stream); diff --git a/tests/kds_s2000w_client_mock.c b/tests/kds_s2000w_client_mock.c index 700ca51..23cf269 100644 --- a/tests/kds_s2000w_client_mock.c +++ b/tests/kds_s2000w_client_mock.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -17,6 +18,16 @@ void mock_response(response* resp) resp->size = mock_resp->size; } +void __wrap_kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat) +{ + return; +} + +void __wrap_kds_s2000w_client_free() +{ + return; +} + uint8_t __wrap_kds_s2000w_client_open_session(response* response) { function_called(); diff --git a/tests/kds_s2000w_client_mock.h b/tests/kds_s2000w_client_mock.h index 3aa7623..7103ebd 100644 --- a/tests/kds_s2000w_client_mock.h +++ b/tests/kds_s2000w_client_mock.h @@ -10,7 +10,7 @@ void mock_response(response* resp); -void __wrap_kds_s2000w_client_init(); +void __wrap_kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat); void __wrap_kds_s2000w_client_free(); uint8_t __wrap_kds_s2000w_client_open_session(response* response); -- 2.39.5