kds_s2000w_debug_printf(ALL, "init handler");
handler* h = malloc(sizeof(handler));
+ if (h == NULL)
+ return NULL;
+
h->current_scanner_config = NULL;
h->current_scan_status = malloc(sizeof(scanstatus));
h->read_info = malloc(sizeof(readinfo));
return;
handler* h = kds_s2000w_handler_init();
- *handle = h;
+ if (h == NULL)
+ return;
+ *handle = h;
_kds_s2000w_handler_load_config(h);
kds_s2000w_debug_printf_version(INFO, DEVICE_NAME, MAJOR, MINOR, PATCH);
return;
image_metadata* mdata = malloc(sizeof(image_metadata));
-
- blobdata* image = (blobdata*) h->image;
+ if (mdata == NULL)
+ return;
blobdata* scanner_image = malloc(sizeof(blobdata));
- uint8_t channels = 1;
-
+ if (scanner_image == NULL) {
+ free(mdata);
+ mdata = NULL;
+ return;
+ }
+ blobdata* image = (blobdata*) h->image;
scanner_image->data = malloc(sizeof(char) * image->size);
+ if (scanner_image->data == NULL) {
+ free(mdata);
+ mdata = NULL;
+ free(scanner_image);
+ scanner_image = NULL;
+ return;
+ }
+
scanner_image->size = image->size;
- memcpy(scanner_image->data, image->data, image->size);
+ memcpy(scanner_image->data, image->data, image->size);
free(image->data);
image->data = NULL;
image->data = 0;
+ uint8_t channels = 1;
if (params->format == 1)
channels = 3;
return SANE_STATUS_INVAL;
kds_s2000w_handler_open(devicename, handle);
+ if (handle == NULL)
+ return SANE_STATUS_NO_MEM;
handler* h = (handler*) *handle;