mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-03 11:28:58 +00:00
trivial: Make the SREC parser more spec compliant
Only upgrade S5 into S6 when there are over 0xFFFF records.
This commit is contained in:
parent
04a6877e06
commit
3a63f5bd9b
@ -550,11 +550,9 @@ fu_srec_firmware_write(FuFirmware *firmware, GError **error)
|
||||
/* upgrade to longer addresses? */
|
||||
if (fu_firmware_get_addr(firmware) >= (1ull << 24)) {
|
||||
kind_data = FU_FIRMWARE_SREC_RECORD_KIND_S3_DATA_32;
|
||||
kind_coun = FU_FIRMWARE_SREC_RECORD_KIND_S6_COUNT_24;
|
||||
kind_term = FU_FIRMWARE_SREC_RECORD_KIND_S7_COUNT_32; /* intentional... */
|
||||
} else if (fu_firmware_get_addr(firmware) >= (1ull << 16)) {
|
||||
kind_data = FU_FIRMWARE_SREC_RECORD_KIND_S2_DATA_24;
|
||||
kind_coun = FU_FIRMWARE_SREC_RECORD_KIND_S6_COUNT_24;
|
||||
kind_term = FU_FIRMWARE_SREC_RECORD_KIND_S8_TERMINATION_24;
|
||||
}
|
||||
|
||||
@ -585,6 +583,9 @@ fu_srec_firmware_write(FuFirmware *firmware, GError **error)
|
||||
fu_chunk_get_data(chk),
|
||||
fu_chunk_get_data_sz(chk));
|
||||
}
|
||||
/* upgrade to longer format */
|
||||
if (chunks->len > G_MAXUINT16)
|
||||
kind_coun = FU_FIRMWARE_SREC_RECORD_KIND_S6_COUNT_24;
|
||||
fu_srec_firmware_write_line(str, kind_coun, chunks->len, NULL, 0);
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ fu_wac_firmware_xml_func(void)
|
||||
g_assert_true(ret);
|
||||
csum1 = fu_firmware_get_checksum(firmware1, G_CHECKSUM_SHA1, &error);
|
||||
g_assert_no_error(error);
|
||||
g_assert_cmpstr(csum1, ==, "bd734911430831127a7bba4664e212a56a2821bc");
|
||||
g_assert_cmpstr(csum1, ==, "346f6196449b356777cf241f6edb039d503b88a1");
|
||||
|
||||
/* ensure we can round-trip */
|
||||
xml_out = fu_firmware_export_to_xml(firmware1, FU_FIRMWARE_EXPORT_FLAG_NONE, &error);
|
||||
|
Loading…
Reference in New Issue
Block a user