mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-13 17:23:20 +00:00
ccgx: Fix division by zero for invalid firmware
This commit is contained in:
parent
17c0a6c239
commit
6a33d2d99e
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user