Messages in this thread Patch in this message | | | From | Shuah Khan <> | Subject | [PATCH] module: fix validate_section_offset() overflow bug on 64-bit | Date | Fri, 15 Oct 2021 14:57:41 -0600 |
| |
validate_section_offset() uses unsigned long local variable to add/store shdr->sh_offset and shdr->sh_size on all platforms. unsigned long is too short when sh_offset is Elf64_Off which would be the case on 64bit ELF headers.
Fix the overflow problem using the right size local variable when CONFIG_64BIT is defined.
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org> --- kernel/module.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kernel/module.c b/kernel/module.c index f5d6e388478c..e7402fb1f4e7 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -2942,7 +2942,11 @@ static int module_sig_check(struct load_info *info, int flags) static int validate_section_offset(struct load_info *info, Elf_Shdr *shdr) { +#if defined(CONFIG_64BIT) + unsigned long long secend; +#else unsigned long secend; +#endif /* * Check for both overflow and offset/size being -- 2.30.2
| |