2014-11-07 11:25:01

by Alban

[permalink] [raw]
Subject: [PATCH 1/2] MIPS: FW: Fix parsing u-boot environment

When reading u-boot's key=value pairs it should skip the '=' and not
use the next argument.

Signed-off-by: Alban Bedel <[email protected]>
---
arch/mips/fw/lib/cmdline.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/mips/fw/lib/cmdline.c b/arch/mips/fw/lib/cmdline.c
index ffd0345..cc5d168 100644
--- a/arch/mips/fw/lib/cmdline.c
+++ b/arch/mips/fw/lib/cmdline.c
@@ -68,7 +68,7 @@ char *fw_getenv(char *envname)
result = fw_envp(index + 1);
break;
} else if (fw_envp(index)[i] == '=') {
- result = (fw_envp(index + 1) + i);
+ result = (fw_envp(index) + i + 1);
break;
}
}
--
2.0.0


2014-11-07 11:26:01

by Alban

[permalink] [raw]
Subject: [PATCH 2/2] MIPS: FW: Use kstrtoul() to parse unsigned long from the fw environment

Fix some value corruptions with values that can't be represented in a
signed long.

Signed-off-by: Alban Bedel <[email protected]>
---
arch/mips/fw/lib/cmdline.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/mips/fw/lib/cmdline.c b/arch/mips/fw/lib/cmdline.c
index cc5d168..e680624 100644
--- a/arch/mips/fw/lib/cmdline.c
+++ b/arch/mips/fw/lib/cmdline.c
@@ -88,13 +88,13 @@ unsigned long fw_getenvl(char *envname)
{
unsigned long envl = 0UL;
char *str;
- long val;
int tmp;

str = fw_getenv(envname);
if (str) {
- tmp = kstrtol(str, 0, &val);
- envl = (unsigned long)val;
+ tmp = kstrtoul(str, 0, &envl);
+ if (tmp)
+ envl = 0;
}

return envl;
--
2.0.0

2014-11-07 12:43:15

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 1/2] MIPS: FW: Fix parsing u-boot environment

Hello.

On 11/7/2014 2:23 PM, Alban Bedel wrote:

> When reading u-boot's key=value pairs it should skip the '=' and not
> use the next argument.

> Signed-off-by: Alban Bedel <[email protected]>
> ---
> arch/mips/fw/lib/cmdline.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

> diff --git a/arch/mips/fw/lib/cmdline.c b/arch/mips/fw/lib/cmdline.c
> index ffd0345..cc5d168 100644
> --- a/arch/mips/fw/lib/cmdline.c
> +++ b/arch/mips/fw/lib/cmdline.c
> @@ -68,7 +68,7 @@ char *fw_getenv(char *envname)
> result = fw_envp(index + 1);
> break;
> } else if (fw_envp(index)[i] == '=') {
> - result = (fw_envp(index + 1) + i);
> + result = (fw_envp(index) + i + 1);

Perhaps it's time to drop the useless outer parens?

WBR, Sergei

2014-11-08 11:36:35

by Alban

[permalink] [raw]
Subject: Re: [PATCH 1/2] MIPS: FW: Fix parsing u-boot environment

On Fri, 07 Nov 2014 15:43:10 +0300
Sergei Shtylyov <[email protected]> wrote:

> Hello.
>
> On 11/7/2014 2:23 PM, Alban Bedel wrote:
>
> > When reading u-boot's key=value pairs it should skip the '=' and not
> > use the next argument.
>
> > Signed-off-by: Alban Bedel <[email protected]>
> > ---
> > arch/mips/fw/lib/cmdline.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
>
> > diff --git a/arch/mips/fw/lib/cmdline.c b/arch/mips/fw/lib/cmdline.c
> > index ffd0345..cc5d168 100644
> > --- a/arch/mips/fw/lib/cmdline.c
> > +++ b/arch/mips/fw/lib/cmdline.c
> > @@ -68,7 +68,7 @@ char *fw_getenv(char *envname)
> > result = fw_envp(index +
> > 1); break;
> > } else if (fw_envp(index)[i] ==
> > '=') {
> > - result = (fw_envp(index +
> > 1) + i);
> > + result = (fw_envp(index) +
> > i + 1);
>
> Perhaps it's time to drop the useless outer parens?

I agree, I'm sending a new serie.

Alban