From: Bastian Dehn Date: Fri, 31 Oct 2025 15:15:29 +0000 (+0100) Subject: add no mem tests for open X-Git-Tag: v1.1.20^2~1^2~13 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=a297d46e3dcd53ca03a2878889b6fa6d02f177e7;p=sane-kds-s2000w-net.git add no mem tests for open --- diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index a49f487..a00ad91 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -193,9 +193,28 @@ handler_t* kds_s2000w_handler_init() return NULL; h->scanner_config = NULL; + h->scan_status = NULL; + h->image = NULL; + h-> coord = NULL; + h->scan_status = malloc(sizeof(scan_status_t)); + if (h->scan_status == NULL) { + kds_s2000w_handler_free(h); + return NULL; + } + h->image = malloc(sizeof(imagedata_t)); + if (h->image == NULL) { + kds_s2000w_handler_free(h); + return NULL; + } + h->image->data = NULL; + h->coord = malloc(sizeof(coord_t)); + if (h->coord == NULL) { + kds_s2000w_handler_free(h); + return NULL; + } h->profile = 0; h->sessionid = 0; @@ -205,7 +224,6 @@ handler_t* kds_s2000w_handler_init() h->scan_status->downloaded_images = 0; h->scan_status->read_bytes = 0; h->image->size = 0; - h->image->data = NULL; h->coord->offset_x = 0; h->coord->offset_y = 0; h->coord->width = 0; @@ -225,8 +243,10 @@ void kds_s2000w_handler_free(handler_t* h) h->scanner_config = NULL; free(h->scan_status); h->scan_status = NULL; - free(h->image->data); - h->image->data = NULL; + if (h->image != NULL) { + free(h->image->data); + h->image->data = NULL; + } free(h->image); h->image = NULL; free(h->coord); diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index afeca40..fa9e39a 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -309,6 +309,24 @@ void sane_kds_s2000w_net_open_no_mem_init_hanlder_test() assert_int_equal(status, SANE_STATUS_NO_MEM); + status = 0; + set_no_mem_counter(1); + status = sane_kds_s2000w_net_open("kds_s2000w_net", hlist); + + assert_int_equal(status, SANE_STATUS_NO_MEM); + + status = 0; + set_no_mem_counter(2); + status = sane_kds_s2000w_net_open("kds_s2000w_net", hlist); + + assert_int_equal(status, SANE_STATUS_NO_MEM); + + status = 0; + set_no_mem_counter(3); + status = sane_kds_s2000w_net_open("kds_s2000w_net", hlist); + + assert_int_equal(status, SANE_STATUS_NO_MEM); + free(hlist); hlist = NULL; }