|
@@ -921,6 +921,7 @@ int filename__read_build_id(const char *filename, void *bf, size_t size)
|
|
GElf_Shdr shdr;
|
|
GElf_Shdr shdr;
|
|
Elf_Data *data;
|
|
Elf_Data *data;
|
|
Elf_Scn *sec;
|
|
Elf_Scn *sec;
|
|
|
|
+ Elf_Kind ek;
|
|
void *ptr;
|
|
void *ptr;
|
|
Elf *elf;
|
|
Elf *elf;
|
|
|
|
|
|
@@ -937,6 +938,10 @@ int filename__read_build_id(const char *filename, void *bf, size_t size)
|
|
goto out_close;
|
|
goto out_close;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ ek = elf_kind(elf);
|
|
|
|
+ if (ek != ELF_K_ELF)
|
|
|
|
+ goto out_elf_end;
|
|
|
|
+
|
|
if (gelf_getehdr(elf, &ehdr) == NULL) {
|
|
if (gelf_getehdr(elf, &ehdr) == NULL) {
|
|
pr_err("%s: cannot get elf header.\n", __func__);
|
|
pr_err("%s: cannot get elf header.\n", __func__);
|
|
goto out_elf_end;
|
|
goto out_elf_end;
|