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
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
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