diff --git a/plugins/ccgx/fu-ccgx-firmware.c b/plugins/ccgx/fu-ccgx-firmware.c index 53790688d..7b5bc7762 100644 --- a/plugins/ccgx/fu-ccgx-firmware.c +++ b/plugins/ccgx/fu-ccgx-firmware.c @@ -139,6 +139,17 @@ fu_ccgx_firmware_add_record (FuCcgxFirmware *self, const gchar *line, GError **e return TRUE; } +static guint8 +fu_ccgx_firmware_record_calc_checksum (FuCcgxFirmwareRecord *rcd) +{ + guint8 csum = 0x0; + gsize bufsz = 0; + const guint8 *buf = g_bytes_get_data (rcd->data, &bufsz); + for (gsize j = 0; j < bufsz; j++) + csum += buf[j]; + return csum; +} + static gboolean fu_ccgx_firmware_parse_md_block (FuCcgxFirmware *self, FuFirmwareImage *img, GError **error) { @@ -198,10 +209,8 @@ fu_ccgx_firmware_parse_md_block (FuCcgxFirmware *self, FuFirmwareImage *img, GEr } for (guint i = 0; i < self->records->len - 1; i++) { rcd = g_ptr_array_index (self->records, i); - buf = g_bytes_get_data (rcd->data, &bufsz); - fw_size += bufsz; - for (gsize j = 0; j < bufsz; j++) - checksum_calc += buf[j]; + checksum_calc += fu_ccgx_firmware_record_calc_checksum (rcd); + fw_size += g_bytes_get_size (rcd->data); } if (fw_size != metadata.fw_size) { g_set_error (error,