]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
fix max options by mask
authorBastian Dehn <hhaalo@arcor.de>
Thu, 26 Mar 2026 15:29:07 +0000 (16:29 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 26 Mar 2026 15:29:07 +0000 (16:29 +0100)
src/kds_s2000w_option_descriptors.c
tests/kds_s2000w_net_get_opt_tests.c
tests/kds_s2000w_net_set_opt_tests.c
tests/kds_s2000w_option_descriptor_tests.c

index 835f8b52b69cbfaff91f93be0fa77d679edefb92..e819178183a010d8e1f6ded653aa3e024d6daac9 100644 (file)
@@ -4,6 +4,7 @@
 #include "kds_s2000w_option_descriptors.h"
 
 #define BITS16 16
+#define MAX_AVAILABLE_OPTIONS 48
 
 typedef option_descriptor_t* (*descriptor_fn)(mask_option_t* mask);
 typedef struct {
@@ -1488,7 +1489,11 @@ SANE_Status _kds_s2000w_option_descriptor_init_profile(descriptor_fn* fn, size_t
        if (kds_s2000w_option_descriptors == NULL)
                return SANE_STATUS_NO_MEM;
 
-       kds_s2000w_option_descriptors->size = _kds_s2000w_option_descriptor_option_count_from_mask(mask);;
+       kds_s2000w_option_descriptors->size = MAX_AVAILABLE_OPTIONS;
+       size_t available_options = _kds_s2000w_option_descriptor_option_count_from_mask(mask);
+       if (available_options < MAX_AVAILABLE_OPTIONS)
+               kds_s2000w_option_descriptors->size = available_options;
+
        kds_s2000w_option_descriptors->descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_option_descriptors->size);
        if (kds_s2000w_option_descriptors->descriptors == NULL) {
                free(kds_s2000w_option_descriptors);
index d11fd25148f75bd3c7fcab9e84ed7d5898578189..6532e22100cd696e3cec15ee03941efa3c3e0061 100644 (file)
@@ -22,12 +22,7 @@ int setup(void** state)
        if (mask == NULL)
                return 1;
 
-       mask->standard_group = 0xf;
-       mask->geometry_group = 0x3f;
-       mask->boldness_smoothing_group = 0xf;
-       mask->boldness_color_group = 0x1fff;
-       mask->image_processing_group = 0x7f;
-       mask->feeder_group = 0x7f;
+       memset(mask, 0xff, sizeof(mask_option_t));
        kds_s2000w_option_descriptors_init(mask);
        free(mask);
        mask = NULL;
index 7dbab62119e48404d9ad1b33e879ffacc230b030..6ef593c75ef442dce79fd480c43e61eed406d7b0 100644 (file)
@@ -17,12 +17,7 @@ int setup(void** state)
        if (mask == NULL)
                return 1;
 
-       mask->standard_group = 0xf;
-       mask->geometry_group = 0x3f;
-       mask->boldness_smoothing_group = 0xf;
-       mask->boldness_color_group = 0x1fff;
-       mask->image_processing_group = 0x7f;
-       mask->feeder_group = 0x7f;
+       memset(mask, 0xff, sizeof(mask_option_t));
        kds_s2000w_option_descriptors_init(mask);
        free(mask);
        mask = NULL;
index e928a6ca32d5eb699b0f0e31732318c0dc2e20e0..fc473bc2c5ad3a6206843b7625a666f6ebb5803a 100644 (file)
@@ -17,12 +17,7 @@ void _kds_s2000w_option_init_descriptor_no_mem(int16_t no_mem_count)
        if (mask == NULL)
                return;
 
-       mask->standard_group = 0xf;
-       mask->geometry_group = 0x3f;
-       mask->boldness_smoothing_group = 0xf;
-       mask->boldness_color_group = 0x1fff;
-       mask->image_processing_group = 0x7f;
-       mask->feeder_group = 0x7f;
+       memset(mask, 0xff, sizeof(mask_option_t));
        SANE_Status status = kds_s2000w_option_descriptors_init(mask);
        free(mask);
        mask = NULL;
@@ -36,12 +31,7 @@ int setup(void** state)
        if (mask == NULL)
                return 1;
 
-       mask->standard_group = 0xf;
-       mask->geometry_group = 0x3f;
-       mask->boldness_smoothing_group = 0xf;
-       mask->boldness_color_group = 0x1fff;
-       mask->image_processing_group = 0x7f;
-       mask->feeder_group = 0x7f;
+       memset(mask, 0xff, sizeof(mask_option_t));
        SANE_Status status = kds_s2000w_option_descriptors_init(mask);
        free(mask);
        mask = NULL;