From: Miquel Raynal Date: Thu, 6 Sep 2018 07:08:44 +0000 (+0200) Subject: lib: strto: fix metric suffix parsing in strtoul[l] X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=b87b0d8d79e05f85e4f18200eac4283d513c3f3c;p=u-boot.git lib: strto: fix metric suffix parsing in strtoul[l] 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 Reviewed-by: Stefan Roese --- 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; }