Message ID | 20171108211354.16683-1-xypron.glpk@gmx.de |
---|---|
State | Accepted |
Commit | 0931ed3c0d0fdea924b7b7196ad92c467b50debf |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot,1/1] kconfig/symbol.c: use correct pointer type argument for sizeof | expand |
On Wed, Nov 08, 2017 at 10:13:54PM +0100, Heinrich Schuchardt wrote: > sym_arr is of type struct symbol **. > So in malloc we need sizeof(struct symbol *). > > The problem was indicated by coccinelle. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > scripts/kconfig/symbol.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c > index 20136ffefb..3c8bd9bb42 100644 > --- a/scripts/kconfig/symbol.c > +++ b/scripts/kconfig/symbol.c > @@ -1061,7 +1061,7 @@ struct symbol **sym_re_search(const char *pattern) > } > if (sym_match_arr) { > qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); > - sym_arr = malloc((cnt+1) * sizeof(struct symbol)); > + sym_arr = malloc((cnt+1) * sizeof(struct symbol *)); > if (!sym_arr) > goto sym_re_search_free; > for (i = 0; i < cnt; i++) Since this comes right from the kernel, shouldn't it be fixed there too? Or is it already? Thanks!
On 11/09/2017 03:01 AM, Tom Rini wrote: > On Wed, Nov 08, 2017 at 10:13:54PM +0100, Heinrich Schuchardt wrote: >> sym_arr is of type struct symbol **. >> So in malloc we need sizeof(struct symbol *). >> >> The problem was indicated by coccinelle. >> >> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> >> --- >> scripts/kconfig/symbol.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c >> index 20136ffefb..3c8bd9bb42 100644 >> --- a/scripts/kconfig/symbol.c >> +++ b/scripts/kconfig/symbol.c >> @@ -1061,7 +1061,7 @@ struct symbol **sym_re_search(const char *pattern) >> } >> if (sym_match_arr) { >> qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); >> - sym_arr = malloc((cnt+1) * sizeof(struct symbol)); >> + sym_arr = malloc((cnt+1) * sizeof(struct symbol *)); >> if (!sym_arr) >> goto sym_re_search_free; >> for (i = 0; i < cnt; i++) > > Since this comes right from the kernel, shouldn't it be fixed there too? > Or is it already? Thanks! > I already sent a mail upstream: https://lkml.org/lkml/2017/11/8/898 Coccinelle indicated a few other problems (using the Linux coccicheck script): https://patchwork.ozlabs.org/patch/836007/ https://patchwork.ozlabs.org/patch/836008/ https://patchwork.ozlabs.org/patch/836028/ https://patchwork.ozlabs.org/patch/836091/ Scripts like scripts/coccinelle/iterators/itnull.cocci are useful to search for API specific issues which generalized static analyzers like cppcheck miss. To apply coccinelle I just copied scripts/coccicheck and scripts/coccinelle/* from Linux to U-Boot and ran sudo apt-get install coccinelle srctree=. scripts/coccicheck Regards Heinrich
On Wed, Nov 08, 2017 at 10:13:54PM +0100, Heinrich Schuchardt wrote: > sym_arr is of type struct symbol **. > So in malloc we need sizeof(struct symbol *). > > The problem was indicated by coccinelle. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Applied to u-boot/master, thanks!
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 20136ffefb..3c8bd9bb42 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c @@ -1061,7 +1061,7 @@ struct symbol **sym_re_search(const char *pattern) } if (sym_match_arr) { qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); - sym_arr = malloc((cnt+1) * sizeof(struct symbol)); + sym_arr = malloc((cnt+1) * sizeof(struct symbol *)); if (!sym_arr) goto sym_re_search_free; for (i = 0; i < cnt; i++)
sym_arr is of type struct symbol **. So in malloc we need sizeof(struct symbol *). The problem was indicated by coccinelle. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> --- scripts/kconfig/symbol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)