2021-12-28 02:06:40

by Hangyu Hua

[permalink] [raw]
Subject: [PATCH v2] m68k/kernel: array out of bound access in process_uboot_commandline

When the size of commandp >= size, array out of bound write occurs because
len == 0.

Signed-off-by: Hangyu Hua <[email protected]>
---
arch/m68k/kernel/uboot.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/m68k/kernel/uboot.c b/arch/m68k/kernel/uboot.c
index 928dbd33fc4a..63eaf3c3ddcd 100644
--- a/arch/m68k/kernel/uboot.c
+++ b/arch/m68k/kernel/uboot.c
@@ -101,5 +101,6 @@ __init void process_uboot_commandline(char *commandp, int size)
}

parse_uboot_commandline(commandp, len);
- commandp[len - 1] = 0;
+ if (len > 0)
+ commandp[len - 1] = 0;
}
--
2.25.1



2021-12-28 08:40:04

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH v2] m68k/kernel: array out of bound access in process_uboot_commandline

CC greg

On Tue, Dec 28, 2021 at 3:06 AM Hangyu Hua <[email protected]> wrote:
>
> When the size of commandp >= size, array out of bound write occurs because
> len == 0.
>
> Signed-off-by: Hangyu Hua <[email protected]>
> ---
> arch/m68k/kernel/uboot.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/m68k/kernel/uboot.c b/arch/m68k/kernel/uboot.c
> index 928dbd33fc4a..63eaf3c3ddcd 100644
> --- a/arch/m68k/kernel/uboot.c
> +++ b/arch/m68k/kernel/uboot.c
> @@ -101,5 +101,6 @@ __init void process_uboot_commandline(char *commandp, int size)
> }
>
> parse_uboot_commandline(commandp, len);
> - commandp[len - 1] = 0;
> + if (len > 0)
> + commandp[len - 1] = 0;
> }
> --
> 2.25.1

2022-01-04 02:29:41

by Hangyu Hua

[permalink] [raw]
Subject: Re: [PATCH v2] m68k/kernel: array out of bound access in process_uboot_commandline

Hi, I think this patch may be forgotten. So I send this e-mail. And I
cc Andreas
who helped me fix the initial version of this patch.

Happy new year.

On Tue, Dec 28, 2021 at 4:40 PM Geert Uytterhoeven <[email protected]> wrote:
>
> CC greg
>
> On Tue, Dec 28, 2021 at 3:06 AM Hangyu Hua <[email protected]> wrote:
> >
> > When the size of commandp >= size, array out of bound write occurs because
> > len == 0.
> >
> > Signed-off-by: Hangyu Hua <[email protected]>
> > ---
> > arch/m68k/kernel/uboot.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/m68k/kernel/uboot.c b/arch/m68k/kernel/uboot.c
> > index 928dbd33fc4a..63eaf3c3ddcd 100644
> > --- a/arch/m68k/kernel/uboot.c
> > +++ b/arch/m68k/kernel/uboot.c
> > @@ -101,5 +101,6 @@ __init void process_uboot_commandline(char *commandp, int size)
> > }
> >
> > parse_uboot_commandline(commandp, len);
> > - commandp[len - 1] = 0;
> > + if (len > 0)
> > + commandp[len - 1] = 0;
> > }
> > --
> > 2.25.1