From 5ef1e2dcfa2845d7196223af2e170798f7621df6 Mon Sep 17 00:00:00 2001 From: Lorenzo Miori Date: Wed, 11 Sep 2013 22:42:59 +0200 Subject: [PATCH] ypr0-ypr1 firmware tools fix fixed a bug concerning bytes padding, since it wasn't correctly implemented regarding original firmware structure. This fixes ROM generation especially for ypr1. Change-Id: I1a40fb4bb8f9d6b005d694246123e314c4d19b49 Reviewed-on: http://gerrit.rockbox.org/616 Reviewed-by: Thomas Martitz --- utils/ypr0tools/fwcrypt.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/utils/ypr0tools/fwcrypt.c b/utils/ypr0tools/fwcrypt.c index e99d8872ba..feeff26bdc 100644 --- a/utils/ypr0tools/fwcrypt.c +++ b/utils/ypr0tools/fwcrypt.c @@ -47,6 +47,15 @@ static void die(int error) exit(error); } +static void pad4byte(char byte, FILE* handle) { + int padding = 4 - ftell(handle) % 4; + if (padding != 4) { + while (padding-- > 0) { + fwrite(&byte, 1, 1, handle); + } + } +} + int main(int argc, char **argv) { FILE* component_handle = NULL; @@ -136,6 +145,9 @@ int main(int argc, char **argv) } } + /* Padding */ + pad4byte('\n', output_file); + /* write final data to the firmware file */ for (int i = 0; i < YPR0_COMPONENTS_COUNT; i++) { @@ -162,7 +174,7 @@ int main(int argc, char **argv) } /* padding */ if (i < (YPR0_COMPONENTS_COUNT-1)) - fputs("\0\0\0\0", output_file); + pad4byte('\0', output_file); } /* free the big amount of memory and close handles */