aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>2013-06-19 23:28:26 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2013-06-21 11:21:09 +0000
commit9f1616d2b5ea2ccacc77f5c2173be8b340f79973 (patch)
tree1450c370ff174c27f46feb6c4875042ca3bcb9d5 /src/flash
parent601e35571c2c8c2032a603834db1569828ac412a (diff)
stm32f2x: Correct calculation of number of 128k sectors.
Fixes regression introduced in 9785f51f that caused write outside allocated memory during probe of devices with <1024K flash. Reported-by: Alexander Pakhomov <ker0sin@yandex.ru> Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Change-Id: Ifba8833e436064624efbf678162538fd351a5702 Reviewed-on: http://openocd.zylin.com/1450 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/nor/stm32f2x.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c
index eda7741c..7b8ac941 100644
--- a/src/flash/nor/stm32f2x.c
+++ b/src/flash/nor/stm32f2x.c
@@ -711,6 +711,7 @@ static int stm32x_write(struct flash_bank *bank, uint8_t *buffer,
static void setup_sector(struct flash_bank *bank, int start, int num, int size)
{
for (int i = start; i < (start + num) ; i++) {
+ assert(i < bank->num_sectors);
bank->sectors[i].offset = bank->size;
bank->sectors[i].size = size;
bank->size += bank->sectors[i].size;
@@ -830,7 +831,7 @@ static int stm32x_probe(struct flash_bank *bank)
setup_sector(bank, 4, 1, 64 * 1024);
/* dynamic memory */
- setup_sector(bank, 4 + 1, MAX(12, num_pages) - 5, 128 * 1024);
+ setup_sector(bank, 4 + 1, MIN(12, num_pages) - 5, 128 * 1024);
if (stm32x_info->has_large_mem) {