summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-12-14 23:07:53 +0100
committerPeter Wu <peter@lekensteyn.nl>2014-12-14 23:07:53 +0100
commite922ec016555b743a52312df3ad98e4150b05c79 (patch)
tree2a9aea5ddb1a6396adf132ae75a24e3735392c57
parenta9e8281750ab95cc4b7ffcdc0c925da15e45bb77 (diff)
downloadt650-dfu-e922ec016555b743a52312df3ad98e4150b05c79.tar.gz
fw len must be a multiple of 15 bytes
-rw-r--r--fw-update.c12
1 files changed, 12 insertions, 0 deletions
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) {