From: Andreas Fritiofson Date: Wed, 19 Jun 2013 21:28:26 +0000 (+0200) Subject: stm32f2x: Correct calculation of number of 128k sectors. X-Git-Tag: v0.8.0-rc1~396 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9f1616d2b5ea2ccacc77f5c2173be8b340f79973;p=openocd 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 Signed-off-by: Andreas Fritiofson Change-Id: Ifba8833e436064624efbf678162538fd351a5702 Reviewed-on: http://openocd.zylin.com/1450 Tested-by: jenkins Reviewed-by: Spencer Oliver --- 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) {