From: Bastian Dehn Date: Thu, 30 Oct 2025 18:05:59 +0000 (+0100) Subject: add test for failed init handler X-Git-Tag: v1.1.20^2~1^2~16 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=6fc15544cc11dad6501c6d1144fc6079a8f4ea1b;p=sane-kds-s2000w-net.git add test for failed init handler --- diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 0c0dd14..a49f487 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -260,8 +260,10 @@ connection_state_t kds_s2000w_handler_open(const char* devicename, void** handle return NOTCONNECTED; handler_t* h = kds_s2000w_handler_init(); - if (h == NULL) + if (h == NULL) { + *handle = NULL; return NOTCONNECTED; + } *handle = h; _kds_s2000w_handler_load_config(h); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 6292392..92ac44b 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -78,7 +78,7 @@ SANE_Status sane_kds_s2000w_net_open(SANE_String_Const devicename, return SANE_STATUS_INVAL; connection_state_t state = kds_s2000w_handler_open(devicename, handle); - if (handle == NULL) + if (*handle == NULL) return SANE_STATUS_NO_MEM; handler_t* h = (handler_t*) *handle; diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index 5d8b8c8..7ced344 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -10,6 +10,7 @@ #include "../src/kds_s2000w_client.h" #include "../src/kds_s2000w_net.h" #include "../src/kds_s2000w_handler.h" +#include "../src/kds_s2000w_option_descriptors.h" #define MAJOR 1 #define MINOR 1 @@ -305,6 +306,26 @@ void sane_kds_s2000w_net_open_test() free(hlist); hlist = NULL; kds_s2000w_client_free(); + kds_s2000w_option_descriptors_free(); +} + +void sane_kds_s2000w_net_open_no_mem_init_hanlder_test() +{ + void** hlist = malloc(sizeof(void*)); + if (hlist == NULL) + return; + + set_no_mem_counter(0); + SANE_Status status = sane_kds_s2000w_net_open("kds_s2000w_net", hlist); + handler_t* h = (handler_t*) *hlist; + + assert_int_equal(status, SANE_STATUS_NO_MEM); + + kds_s2000w_handler_free(h); + h = NULL; + free(hlist); + hlist = NULL; + kds_s2000w_option_descriptors_free(); } void sane_kds_s2000w_net_open_busy_device_test() @@ -767,6 +788,7 @@ int main() cmocka_unit_test(sane_kds_s2000w_net_get_parameter_color_test), cmocka_unit_test(sane_kds_s2000w_net_get_parameter_bw_test), cmocka_unit_test(sane_kds_s2000w_net_open_test), + cmocka_unit_test(sane_kds_s2000w_net_open_no_mem_init_hanlder_test), cmocka_unit_test(sane_kds_s2000w_net_open_busy_device_test), cmocka_unit_test(sane_kds_s2000w_net_open_invalid_test), cmocka_unit_test(sane_kds_s2000w_net_open_not_connected_test),