From dd83636d90e297e6c2d2f9712cb4ee4d5b4648d3 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 26 Jan 2025 12:25:25 +0100 Subject: [PATCH] add check file type --- src/kds_s2000w_image_converter_netpbm.c | 32 ++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/kds_s2000w_image_converter_netpbm.c b/src/kds_s2000w_image_converter_netpbm.c index 5f83beb..8e3bb81 100644 --- a/src/kds_s2000w_image_converter_netpbm.c +++ b/src/kds_s2000w_image_converter_netpbm.c @@ -10,6 +10,30 @@ #define RGB 3 #define GRAY 1 +int _kds_s2000w_image_converter_is_pnm(blobdata* image) +{ + if (image->size < 2) + return 0; + + char* image_data = (char*) image->data; + if (strncmp(image_data, "P6", 2) == 0) + return 1; + + return strncmp(image_data, "P4", 2) == 0; +} + +int _kds_s2000w_image_converter_is_jpeg(blobdata* image) +{ + if (image->size < 2) + return 0; + + const char first_byte = 0xff; + const char second_byte = 0xd8; + + char* image_data = (char*) image->data; + return image_data[0] == first_byte && image_data[1] == second_byte; +} + int _kds_s2000w_image_converter_find_char(blobdata* image, int start, const char cfind) { char* image_data = (char*) image->data; @@ -165,13 +189,15 @@ void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata* image, ima if (image->size < 2) return; - if (strncmp(image->data, "P6", 2) == 0 - || strncmp (image->data, "P4", 2) == 0) { + if (_kds_s2000w_image_converter_is_pnm(image)) { _kds_s2000w_image_converter_pnm_metadata(image, mdata); return; } - _kds_s2000w_image_converter_jpeg_metadata(image, mdata); + if (_kds_s2000w_image_converter_is_jpeg(image)) { + _kds_s2000w_image_converter_jpeg_metadata(image, mdata); + return; + } return; } -- 2.39.5