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.ray...@bootlin.com> --- lib/strto.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/strto.c b/lib/strto.c index 84f8d92d57..502a0153e7 100644 --- a/lib/strto.c +++ b/lib/strto.c @@ -97,12 +97,11 @@ unsigned long ustrtoul(const char *cp, char **endp, unsigned int base) case 'K': 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; } @@ -122,12 +121,11 @@ unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base) case 'K': 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; } -- 2.17.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot