From: Bastian Dehn Date: Sun, 5 Jan 2025 08:44:15 +0000 (+0100) Subject: fix leak free handler failed open X-Git-Tag: v1.0.24^2~12 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=bea51b3eb48b38fab1444f5911a363c89a818a9c;p=sane-kds-s2000w-net.git fix leak free handler failed open --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index de97c48..3109cac 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -67,11 +67,17 @@ SANE_Status _sane_kds_s2000w_net_open(SANE_String_Const devicename, kds_s2000w_handler_open(devicename, handle); handler* h = (handler*) *handle; - if (h->state == NOTCONNECTED) + if (h->state == NOTCONNECTED) { + free_handler(h); + h = NULL; return SANE_STATUS_IO_ERROR; + } - if (h->state == BUSY) + if (h->state == BUSY) { + free_handler(h); + h = NULL; return SANE_STATUS_DEVICE_BUSY; + } kds_s2000w_option_descriptor_init_option_descriptors(); return SANE_STATUS_GOOD; diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index d8e4e65..823f4cc 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -594,14 +594,9 @@ void sane_kds_s2000w_net_open_busy_device() void** hlist = malloc(sizeof(void*)); SANE_Status status = _sane_kds_s2000w_net_open("kds_s2000w_net", hlist); - handler* h = (handler*) *hlist; - assert_int_equal(h->sessionid, 0); - assert_int_equal(h->state, BUSY); assert_int_equal(status, SANE_STATUS_DEVICE_BUSY); - free_handler(h); - h = NULL; kds_s2000w_client_response_free(resp); resp = NULL; free(hlist); @@ -630,14 +625,9 @@ void sane_kds_s2000w_net_open_not_connected() void** hlist = malloc(sizeof(void*)); SANE_Status status = _sane_kds_s2000w_net_open("kds_s2000w_net", hlist); - handler* h = (handler*) *hlist; - assert_int_equal(h->sessionid, 0); - assert_int_equal(h->state, NOTCONNECTED); assert_int_equal(status, SANE_STATUS_IO_ERROR); - free_handler(h); - h = NULL; kds_s2000w_client_response_free(resp); resp = NULL; free(hlist);