projects
/
fw
/
openocd
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4c3972c
)
kinetis: bugfix in kinetis_write() fallback path
author
Andreas Fritiofson
<andreas.fritiofson@gmail.com>
Wed, 18 Jul 2012 22:02:46 +0000
(
00:02
+0200)
committer
Freddie Chopin
<freddie.chopin@gmail.com>
Wed, 29 Aug 2012 06:26:02 +0000
(06:26 +0000)
Offset calculation into buffer was wrong and code would read outside buffer
if count was not a multiple of four.
Change-Id: Ied625b10221423d5a5f25d27ce1edd8c2c3eca8a
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/749
Reviewed-by: Peter Stuge <peter@stuge.se>
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
src/flash/nor/kinetis.c
patch
|
blob
|
history
diff --git
a/src/flash/nor/kinetis.c
b/src/flash/nor/kinetis.c
index 71722c645fef6120155a95e0646a48ec0ae56d14..433d91e9e0c909475194a9a62906055007a45bbb 100644
(file)
--- a/
src/flash/nor/kinetis.c
+++ b/
src/flash/nor/kinetis.c
@@
-435,7
+435,13
@@
static int kinetis_write(struct flash_bank *bank, uint8_t *buffer,
LOG_DEBUG("write longword @ %08X", offset + i);
w0 = (0x06 << 24) | (bank->base + offset + i);
- w1 = buf_get_u32(buffer + offset + i, 0, 32);
+ if (count - i < 4) {
+ uint32_t padding = 0xffffffff;
+ memcpy(&padding, buffer + i, count - i);
+ w1 = buf_get_u32(&padding, 0, 32);
+ } else {
+ w1 = buf_get_u32(buffer + i, 0, 32);
+ }
result = kinetis_ftfx_command(bank, w0, w1, w2, &ftfx_fstat);