From: htbegin Date: Fri, 1 Mar 2013 23:00:34 +0000 (+0000) Subject: mtd: nand: use ssize_t instead of size_t to prevent infinite loop X-Git-Tag: v2013.07-rc1~49^2~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=453db36863668df08078838029d988b72f0ee994;p=oweals%2Fu-boot.git mtd: nand: use ssize_t instead of size_t to prevent infinite loop When a all 0xFF buffer is passed to drop_ffs, the no-0xFF check loop will loop forever. After the fix, If ssize_t i = -1 and size_t l = i + 1, the value of l will still be 0 as expected. Signed-off-by: Tao Hou Cc: Ben Gardiner Cc: Scott Wood --- diff --git a/drivers/mtd/nand/nand_util.c b/drivers/mtd/nand/nand_util.c index 4727f9c989..fe8bdeb0ea 100644 --- a/drivers/mtd/nand/nand_util.c +++ b/drivers/mtd/nand/nand_util.c @@ -458,7 +458,8 @@ static int check_skip_len(nand_info_t *nand, loff_t offset, size_t length, static size_t drop_ffs(const nand_info_t *nand, const u_char *buf, const size_t *len) { - size_t i, l = *len; + size_t l = *len; + ssize_t i; for (i = l - 1; i >= 0; i--) if (buf[i] != 0xFF)