The last_block argument to nand_erase() is checked against nand->num_blocks,
but the highest valid block number is (total - 1), the test for invalid should
be ">=" rather than ">".

Signed-off-by: Jon Povey <[email protected]>
---
 src/flash/nand/core.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/flash/nand/core.c b/src/flash/nand/core.c
index 9013812..e763491 100644
--- a/src/flash/nand/core.c
+++ b/src/flash/nand/core.c
@@ -528,7 +528,7 @@ int nand_erase(struct nand_device *nand, int first_block, 
int last_block)
        if (!nand->device)
                return ERROR_NAND_DEVICE_NOT_PROBED;
 
-       if ((first_block < 0) || (last_block > nand->num_blocks))
+       if ((first_block < 0) || (last_block >= nand->num_blocks))
                return ERROR_INVALID_ARGUMENTS;
 
        /* make sure we know if a block is bad before erasing it */
-- 
1.6.3.3

_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to