projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: lttng-elf: wrong error label used by error path
[lttng-tools.git]
/
src
/
common
/
lttng-elf.c
diff --git
a/src/common/lttng-elf.c
b/src/common/lttng-elf.c
index bef20ffd4bd52eceb7fec353f885e22e6e9db6d8..807d785cedca27e5b4058193e203bf410a87a349 100644
(file)
--- 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)
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;
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. */
}
/* 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. */
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 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;
}
continue;
}
This page took
0.024053 seconds
and
4
git commands to generate.