From bb0c280181e856bd53833e86238672d32fa8be5c Mon Sep 17 00:00:00 2001 From: Tobias Stoeckmann Date: Sun, 20 Oct 2024 14:08:29 +0200 Subject: [PATCH] libkmod: Simplify size checks An empty section is very unlikely, so reorder code to account for it. Signed-off-by: Tobias Stoeckmann Reviewed-by: Emil Velikov Link: https://github.com/kmod-project/kmod/pull/196 Signed-off-by: Lucas De Marchi --- libkmod/libkmod-elf.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/libkmod/libkmod-elf.c b/libkmod/libkmod-elf.c index e0a7f85e..13ef3df7 100644 --- a/libkmod/libkmod-elf.c +++ b/libkmod/libkmod-elf.c @@ -398,12 +398,10 @@ int kmod_elf_get_strings(const struct kmod_elf *elf, const char *section, char * if (err < 0) return err; - if (size == 0) - return 0; strings = elf_get_mem(elf, off); /* skip zero padding */ - while (strings[0] == '\0' && size > 1) { + while (size > 1 && strings[0] == '\0') { strings++; size--; } @@ -567,12 +565,10 @@ static int elf_strip_vermagic(const struct kmod_elf *elf, uint8_t *changed) err = kmod_elf_get_section(elf, ".modinfo", &sec_off, &size); if (err < 0) return err == -ENODATA ? 0 : err; - if (size == 0) - return 0; strings = elf_get_mem(elf, sec_off); /* skip zero padding */ - while (strings[0] == '\0' && size > 1) { + while (size > 1 && strings[0] == '\0') { strings++; size--; } @@ -657,12 +653,10 @@ static int kmod_elf_get_symbols_symtab(const struct kmod_elf *elf, err = kmod_elf_get_section(elf, "__ksymtab_strings", &off, &size); if (err < 0) return err; - if (size == 0) - return 0; strings = elf_get_mem(elf, off); /* skip zero padding */ - while (strings[0] == '\0' && size > 1) { + while (size > 1 && strings[0] == '\0') { strings++; size--; } -- 2.47.3