pmdinfogen: fix null dereference
authorNeil Horman <nhorman@tuxdriver.com>
Thu, 5 Jan 2017 19:22:41 +0000 (14:22 -0500)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 6 Jan 2017 10:40:30 +0000 (11:40 +0100)
Coverity reports a forward null dereference from a for loop
that works with a variable previously tested for null that had no error
handling or condition to prevent it.  Pretty obvious fix below.

Coverity issue: 139593
Fixes: 98b0fdb0ffc6 ("pmdinfogen: add buildtools and pmdinfogen utility")

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
buildtools/pmdinfogen/pmdinfogen.c

index 5129c57..ba1a12e 100644 (file)
@@ -226,13 +226,14 @@ static int parse_elf(struct elf_info *info, const char *filename)
        }
        if (!info->symtab_start)
                fprintf(stderr, "%s has no symtab?\n", filename);
-
-       /* Fix endianness in symbols */
-       for (sym = info->symtab_start; sym < info->symtab_stop; sym++) {
-               sym->st_shndx = TO_NATIVE(endian, 16, sym->st_shndx);
-               sym->st_name  = TO_NATIVE(endian, 32, sym->st_name);
-               sym->st_value = TO_NATIVE(endian, ADDR_SIZE, sym->st_value);
-               sym->st_size  = TO_NATIVE(endian, ADDR_SIZE, sym->st_size);
+       else {
+               /* Fix endianness in symbols */
+               for (sym = info->symtab_start; sym < info->symtab_stop; sym++) {
+                       sym->st_shndx = TO_NATIVE(endian, 16, sym->st_shndx);
+                       sym->st_name  = TO_NATIVE(endian, 32, sym->st_name);
+                       sym->st_value = TO_NATIVE(endian, ADDR_SIZE, sym->st_value);
+                       sym->st_size  = TO_NATIVE(endian, ADDR_SIZE, sym->st_size);
+               }
        }
 
        if (symtab_shndx_idx != ~0U) {