]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod: Simplify size checks
authorTobias Stoeckmann <tobias@stoeckmann.org>
Sun, 20 Oct 2024 12:08:29 +0000 (14:08 +0200)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Tue, 22 Oct 2024 17:02:56 +0000 (12:02 -0500)
An empty section is very unlikely, so reorder code to account for it.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Link: https://github.com/kmod-project/kmod/pull/196
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
libkmod/libkmod-elf.c

index e0a7f85eee771afb803b464965a344341f8061d2..13ef3df75b130834fa72474ee99363f3d765906d 100644 (file)
@@ -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--;
        }