]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add no mem tests for open
authorBastian Dehn <hhaalo@arcor.de>
Fri, 31 Oct 2025 15:15:29 +0000 (16:15 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 31 Oct 2025 15:15:29 +0000 (16:15 +0100)
src/kds_s2000w_handler.c
tests/kds_s2000w_net_tests.c

index a49f48709aeb4af3f319fd893abdd9bf5a97e6d0..a00ad919002166c28decd11ddf966fb9790f2e16 100644 (file)
@@ -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);
index afeca4023f6caa015ede228570898664e343eb01..fa9e39a706c8508c9630706d7f8f554293280c52 100644 (file)
@@ -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;
 }