From 633571fa9944ff12e6bcc2c9f2d24d31bb87ce6b Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Tue, 5 Apr 2022 13:05:57 +0100 Subject: [PATCH] trivial: Fix some 'Comparison of narrow type with wide type in loop condition' --- libfwupdplugin/fu-srec-firmware.c | 2 +- plugins/dfu-csr/fu-dfu-csr-device.c | 10 +++++++++- plugins/fresco-pd/fu-fresco-pd-device.c | 2 +- .../synaptics-rmi/fu-synaptics-rmi-common.c | 2 +- plugins/uefi-capsule/fu-uefi-devpath.c | 2 +- plugins/wacom-usb/fu-wac-device.c | 19 ++++++++++++++----- 6 files changed, 27 insertions(+), 10 deletions(-) diff --git a/libfwupdplugin/fu-srec-firmware.c b/libfwupdplugin/fu-srec-firmware.c index ce57ff0d1..8e5238467 100644 --- a/libfwupdplugin/fu-srec-firmware.c +++ b/libfwupdplugin/fu-srec-firmware.c @@ -385,7 +385,7 @@ fu_srec_firmware_parse(FuFirmware *firmware, } /* could be anything, lets assume text */ - for (guint8 i = 0; i < rcd->buf->len; i++) { + for (guint i = 0; i < rcd->buf->len; i++) { gchar tmp = rcd->buf->data[i]; if (!g_ascii_isgraph(tmp)) break; diff --git a/plugins/dfu-csr/fu-dfu-csr-device.c b/plugins/dfu-csr/fu-dfu-csr-device.c index 06fda7c95..0df9ea63d 100644 --- a/plugins/dfu-csr/fu-dfu-csr-device.c +++ b/plugins/dfu-csr/fu-dfu-csr-device.c @@ -350,7 +350,7 @@ fu_dfu_csr_device_download(FuDevice *device, GError **error) { FuDfuCsrDevice *self = FU_DFU_CSR_DEVICE(device); - guint16 idx; + guint idx; g_autoptr(GBytes) blob_empty = NULL; g_autoptr(GBytes) blob = NULL; g_autoptr(GPtrArray) chunks = NULL; @@ -369,6 +369,14 @@ fu_dfu_csr_device_download(FuDevice *device, 0x0, FU_DFU_CSR_PACKET_DATA_SIZE - FU_DFU_CSR_COMMAND_HEADER_SIZE); + if (chunks->len > G_MAXUINT16) { + g_set_error(error, + FWUPD_ERROR, + FWUPD_ERROR_INVALID_FILE, + "too many chunks for hardware: 0x%x", + chunks->len); + return FALSE; + } /* send to hardware */ fu_progress_set_steps(progress, chunks->len); diff --git a/plugins/fresco-pd/fu-fresco-pd-device.c b/plugins/fresco-pd/fu-fresco-pd-device.c index 7655ef41c..be525d6bd 100644 --- a/plugins/fresco-pd/fu-fresco-pd-device.c +++ b/plugins/fresco-pd/fu-fresco-pd-device.c @@ -313,7 +313,7 @@ fu_fresco_pd_device_write_firmware(FuDevice *device, break; } g_debug("begin_addr: 0x%04x", begin_addr); - for (guint16 i = begin_addr + 3; i < begin_addr + 0x400; i += 3) { + for (guint i = begin_addr + 3; i < (guint)begin_addr + 0x400; i += 3) { for (guint j = 0; j < 3; j++) { if (!fu_fresco_pd_device_read_byte(self, i + j, &config[j], error)) { g_prefix_error(error, "failed to read config byte %u: ", j); diff --git a/plugins/synaptics-rmi/fu-synaptics-rmi-common.c b/plugins/synaptics-rmi/fu-synaptics-rmi-common.c index bf5e8f9af..531ec42cb 100644 --- a/plugins/synaptics-rmi/fu-synaptics-rmi-common.c +++ b/plugins/synaptics-rmi/fu-synaptics-rmi-common.c @@ -91,7 +91,7 @@ fu_synaptics_rmi_function_parse(GByteArray *buf, /* set an enable bit for each data source */ interrupt_offset = interrupt_count % 8; func->interrupt_mask = 0; - for (guint8 i = interrupt_offset; + for (guint i = interrupt_offset; i < (func->interrupt_source_count + interrupt_offset); i++) func->interrupt_mask |= 1 << i; diff --git a/plugins/uefi-capsule/fu-uefi-devpath.c b/plugins/uefi-capsule/fu-uefi-devpath.c index f19cc8bd1..a9347ced7 100644 --- a/plugins/uefi-capsule/fu-uefi-devpath.c +++ b/plugins/uefi-capsule/fu-uefi-devpath.c @@ -94,7 +94,7 @@ fu_uefi_devpath_parse(const guint8 *buf, gsize sz, FuUefiDevpathParseFlags flags sz - offset, 32, FU_DUMP_FLAGS_SHOW_ADDRESSES); - for (guint16 i = offset + 4; i <= sz - 4; i++) { + for (gsize i = offset + 4; i <= sz - 4; i++) { if (memcmp(buf + i, "\x7f\xff\x04\x00", 4) == 0) { hdr_length = i - offset; g_debug("found END_ENTIRE at 0x%04x", (guint)(i - offset)); diff --git a/plugins/wacom-usb/fu-wac-device.c b/plugins/wacom-usb/fu-wac-device.c index e163a372e..731cf2fa8 100644 --- a/plugins/wacom-usb/fu-wac-device.c +++ b/plugins/wacom-usb/fu-wac-device.c @@ -229,6 +229,15 @@ fu_wac_device_ensure_flash_descriptors(FuWacDevice *self, GError **error) return FALSE; g_ptr_array_add(self->flash_descriptors, fd); } + if (self->flash_descriptors->len > G_MAXUINT16) { + g_set_error(error, + FWUPD_ERROR, + FWUPD_ERROR_NOT_SUPPORTED, + "too many flash descriptors for hardware: 0x%x", + self->flash_descriptors->len); + return FALSE; + } + g_debug("added %u flash descriptors", self->flash_descriptors->len); return TRUE; } @@ -507,7 +516,7 @@ fu_wac_device_write_firmware(FuDevice *device, fu_progress_step_done(progress); /* clear all checksums of pages */ - for (guint16 i = 0; i < self->flash_descriptors->len; i++) { + for (guint i = 0; i < self->flash_descriptors->len; i++) { FuWacFlashDescriptor *fd = g_ptr_array_index(self->flash_descriptors, i); if (fu_wav_device_flash_descriptor_is_wp(fd)) continue; @@ -521,7 +530,7 @@ fu_wac_device_write_firmware(FuDevice *device, g_direct_equal, NULL, (GDestroyNotify)g_bytes_unref); - for (guint16 i = 0; i < self->flash_descriptors->len; i++) { + for (guint i = 0; i < self->flash_descriptors->len; i++) { FuWacFlashDescriptor *fd = g_ptr_array_index(self->flash_descriptors, i); GBytes *blob_block; g_autoptr(GBytes) blob_tmp = NULL; @@ -540,7 +549,7 @@ fu_wac_device_write_firmware(FuDevice *device, /* write the data into the flash page */ csum_local = g_new0(guint32, self->flash_descriptors->len); - for (guint16 i = 0; i < self->flash_descriptors->len; i++) { + for (guint i = 0; i < self->flash_descriptors->len; i++) { FuWacFlashDescriptor *fd = g_ptr_array_index(self->flash_descriptors, i); GBytes *blob_block; g_autoptr(GPtrArray) chunks = NULL; @@ -606,7 +615,7 @@ fu_wac_device_write_firmware(FuDevice *device, } /* calculate CRC inside device */ - for (guint16 i = 0; i < self->flash_descriptors->len; i++) { + for (guint i = 0; i < self->flash_descriptors->len; i++) { if (!fu_wac_device_calculate_checksum_of_block(self, i, error)) return FALSE; } @@ -614,7 +623,7 @@ fu_wac_device_write_firmware(FuDevice *device, /* read all CRC of all pages and verify with local CRC */ if (!fu_wac_device_ensure_checksums(self, error)) return FALSE; - for (guint16 i = 0; i < self->flash_descriptors->len; i++) { + for (guint i = 0; i < self->flash_descriptors->len; i++) { FuWacFlashDescriptor *fd = g_ptr_array_index(self->flash_descriptors, i); GBytes *blob_block; guint32 csum_rom;