X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Flttng-elf.c;h=807d785cedca27e5b4058193e203bf410a87a349;hb=991662c82722685383c194b968e880f84e0d2343;hp=bef20ffd4bd52eceb7fec353f885e22e6e9db6d8;hpb=b53d4e59bf0a980aa774dcccc27123986e77b8ff;p=lttng-tools.git diff --git a/src/common/lttng-elf.c b/src/common/lttng-elf.c index bef20ffd4..807d785ce 100644 --- a/src/common/lttng-elf.c +++ b/src/common/lttng-elf.c @@ -133,8 +133,17 @@ dst_sym.st_size = src_sym.st_size; \ } while (0) -/* Both 32bit and 64bit use the same 1 byte field for type. (See elf.h) */ -#define ELF_ST_TYPE(val) ELF32_ST_TYPE(val) +#ifndef ELFCLASSNUM +#define ELFCLASSNUM 3 +#endif + +#ifndef ELFDATANUM +#define ELFDATANUM 3 +#endif + +#ifndef EV_NUM +#define EV_NUM 2 +#endif struct lttng_elf_ehdr { uint16_t e_type; @@ -814,6 +823,12 @@ int lttng_elf_get_symbol_offset(int fd, char *symbol, uint64_t *offset) } /* Get the number of symbol in the table for the iteration. */ + if (symtab_hdr.sh_entsize == 0) { + DBG("Invalid ELF string table entry size."); + ret = LTTNG_ERR_ELF_PARSING; + goto free_string_table_data; + } + sym_count = symtab_hdr.sh_size / symtab_hdr.sh_entsize; /* Loop over all symbol. */ @@ -846,7 +861,8 @@ int lttng_elf_get_symbol_offset(int fd, char *symbol, uint64_t *offset) /* * If the current symbol is not a function; skip to the next symbol. */ - if (ELF_ST_TYPE(curr_sym.st_info) != STT_FUNC) { + /* Both 32bit and 64bit use the same 1 byte field for type. (See elf.h) */ + if (ELF32_ST_TYPE(curr_sym.st_info) != STT_FUNC) { continue; }