diff mbox series

[U-Boot,v7,02/12] lib: strto: fix metric suffix parsing in strtoul[l]

Message ID 20180906070854.9717-3-miquel.raynal@bootlin.com
State Accepted
Commit b87b0d8d79e05f85e4f18200eac4283d513c3f3c
Delegated to: Jagannadha Sutradharudu Teki
Headers show
Series SPI-NAND support | expand

Commit Message

Miquel Raynal Sept. 6, 2018, 7:08 a.m. UTC
While 1kB or 1kiB will be parsed correctly, 1k will return the right
amount, but the metric suffix will not be escaped once the char
pointer updated. Fix this situation by simplifying the move of the
endp pointer.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
 lib/strto.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)
diff mbox series

Patch

diff --git a/lib/strto.c b/lib/strto.c
index b7fc31d6e5..55ff9f7437 100644
--- a/lib/strto.c
+++ b/lib/strto.c
@@ -94,12 +94,11 @@  unsigned long ustrtoul(const char *cp, char **endp, unsigned int base)
 		/* fall through */
 	case 'k':
 		result *= 1024;
-		if ((*endp)[1] == 'i') {
-			if ((*endp)[2] == 'B')
-				(*endp) += 3;
-			else
-				(*endp) += 2;
-		}
+		(*endp)++;
+		if (**endp == 'i')
+			(*endp)++;
+		if (**endp == 'B')
+			(*endp)++;
 	}
 	return result;
 }
@@ -116,12 +115,11 @@  unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base)
 		/* fall through */
 	case 'k':
 		result *= 1024;
-		if ((*endp)[1] == 'i') {
-			if ((*endp)[2] == 'B')
-				(*endp) += 3;
-			else
-				(*endp) += 2;
-		}
+		(*endp)++;
+		if (**endp == 'i')
+			(*endp)++;
+		if (**endp == 'B')
+			(*endp)++;
 	}
 	return result;
 }