]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
fix allocation issues for converter
authorBastian Dehn <hhaalo@arcor.de>
Sat, 11 Oct 2025 10:22:53 +0000 (12:22 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 11 Oct 2025 10:22:53 +0000 (12:22 +0200)
src/kds_s2000w_image_converter_netpbm.c

index f2f1c2162e85cf4fa2cb47758f9c7ba43e3d0625..7ed1288fb50a2d4e6407e52471ca46c23b351db4 100644 (file)
@@ -101,22 +101,25 @@ uint32_t _kds_s2000w_image_converter_get_number_from_substring(char* data, uint3
 {
        kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_get_number_from_substring");
 
-       uint32_t number = 0;
-
        char* number_buffer = malloc(sizeof(char) * MAXBUFFER);
+       if (number_buffer == NULL)
+               return 0;
+
        memset(number_buffer, 0, MAXBUFFER);
        strncpy(number_buffer, &data[start + 1], end - start - 1);
-       number = atoi(number_buffer);
+       uint32_t number = atoi(number_buffer);
 
        free(number_buffer);
        number_buffer = NULL;
-
        return number;
 }
 
 void _kds_s2000w_image_converter_tiff_metadata(blobdata* image, image_metadata* mdata)
 {
        tiff_reader* tiff_handler = malloc(sizeof(tiff_reader));
+       if (tiff_handler == NULL)
+               return;
+
        tiff_handler->image = image;
        tiff_handler->curr_offset = 0;
        TIFF* tiff = TIFFClientOpen("input.tiff", "r", (thandle_t) tiff_handler,
@@ -344,6 +347,9 @@ void _kds_s2000w_image_converter_tiff_to_pnm(blobdata* in, blobdata* out)
        kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_tiff_to_pnm");
 
        tiff_reader* tiff_handler = malloc(sizeof(tiff_reader));
+       if (tiff_handler == NULL)
+               return;
+
        tiff_handler->image = in;
        tiff_handler->curr_offset = 0;
        TIFF* tiff = TIFFClientOpen("input.tiff", "r", (thandle_t*) tiff_handler,
@@ -353,6 +359,11 @@ void _kds_s2000w_image_converter_tiff_to_pnm(blobdata* in, blobdata* out)
                _kds_s2000w_image_converter_tiff_close,
                _kds_s2000w_image_converter_tiff_size,
                NULL, NULL);
+       if (tiff == NULL) {
+               free(tiff_handler);
+               tiff_handler = NULL;
+               return;
+       }
 
        uint32_t width = 0;
        uint32_t height = 0;
@@ -361,6 +372,14 @@ void _kds_s2000w_image_converter_tiff_to_pnm(blobdata* in, blobdata* out)
 
        size_t decompress_size = width * height;
        uint8_t* decompress_data = malloc(sizeof(uint8_t) * decompress_size);
+       if (decompress_data == NULL) {
+               TIFFClose(tiff);
+               tiff = NULL;
+               free(tiff_handler);
+               tiff_handler = NULL;
+               return;
+       }
+
        memset(decompress_data, 0, decompress_size);
 
        uint8_t* row = NULL;