From e922ec016555b743a52312df3ad98e4150b05c79 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Sun, 14 Dec 2014 23:07:53 +0100 Subject: fw len must be a multiple of 15 bytes --- fw-update.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fw-update.c b/fw-update.c index acd53bf..e3e67b4 100644 --- a/fw-update.c +++ b/fw-update.c @@ -303,6 +303,18 @@ int main(int argc, char **argv) { } printf("Firmware size: %zu\n", fw_len); + /* ensure that firmware is a multiple of 15 bytes */ + if (fw_len % 15) { + size_t fw_len_padded = (fw_len / 15 + 1) * 15; + fw = realloc(fw, fw_len_padded); + if (fw == NULL) { + perror("realloc"); + abort(); + } + memset(fw + fw_len, 0xff, fw_len_padded - fw_len); + printf(" (padded with %zi bytes)\n", fw_len_padded - fw_len); + fw_len = fw_len_padded; + } hid_fd = open(argv[1], O_RDWR); if (hid_fd >= 0) { -- cgit v1.2.1