mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-13 19:08:34 +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;
|
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
|
static gboolean
|
||||||
fu_ccgx_firmware_parse_md_block (FuCcgxFirmware *self, FuFirmwareImage *img, GError **error)
|
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++) {
|
for (guint i = 0; i < self->records->len - 1; i++) {
|
||||||
rcd = g_ptr_array_index (self->records, i);
|
rcd = g_ptr_array_index (self->records, i);
|
||||||
buf = g_bytes_get_data (rcd->data, &bufsz);
|
checksum_calc += fu_ccgx_firmware_record_calc_checksum (rcd);
|
||||||
fw_size += bufsz;
|
fw_size += g_bytes_get_size (rcd->data);
|
||||||
for (gsize j = 0; j < bufsz; j++)
|
|
||||||
checksum_calc += buf[j];
|
|
||||||
}
|
}
|
||||||
if (fw_size != metadata.fw_size) {
|
if (fw_size != metadata.fw_size) {
|
||||||
g_set_error (error,
|
g_set_error (error,
|
||||||
|
Loading…
Reference in New Issue
Block a user