modpost: fix off by one in is_executable_section()

Message ID 9ef94ec4-bbb0-43e6-866f-40f68128cd78@moroto.mountain
State New
Headers
Series modpost: fix off by one in is_executable_section() |

Commit Message

Dan Carpenter June 8, 2023, 8:23 a.m. UTC
  The > comparison should be >= to prevent an out of bounds array
access.

Fixes: 52dc0595d540 ("modpost: handle relocations mismatch in __ex_table.")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 scripts/mod/modpost.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Masahiro Yamada June 8, 2023, 2:55 p.m. UTC | #1
On Thu, Jun 8, 2023 at 6:15 PM Dan Carpenter <dan.carpenter@linaro.org> wrote:
>
> The > comparison should be >= to prevent an out of bounds array
> access.
>
> Fixes: 52dc0595d540 ("modpost: handle relocations mismatch in __ex_table.")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---


Applied to linux-kbuild.
Thanks.



>  scripts/mod/modpost.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index d10f5bdcb753..c3cb69c276ae 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -1139,7 +1139,7 @@ static Elf_Sym *find_tosym(struct elf_info *elf, Elf_Addr addr, Elf_Sym *sym)
>
>  static bool is_executable_section(struct elf_info *elf, unsigned int secndx)
>  {
> -       if (secndx > elf->num_sections)
> +       if (secndx >= elf->num_sections)
>                 return false;
>
>         return (elf->sechdrs[secndx].sh_flags & SHF_EXECINSTR) != 0;
> --
> 2.39.2
>
  

Patch

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index d10f5bdcb753..c3cb69c276ae 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1139,7 +1139,7 @@  static Elf_Sym *find_tosym(struct elf_info *elf, Elf_Addr addr, Elf_Sym *sym)
 
 static bool is_executable_section(struct elf_info *elf, unsigned int secndx)
 {
-	if (secndx > elf->num_sections)
+	if (secndx >= elf->num_sections)
 		return false;
 
 	return (elf->sechdrs[secndx].sh_flags & SHF_EXECINSTR) != 0;