summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2006-01-19 10:38:25 +0000
committerMike Frysinger <vapier@gentoo.org>2006-01-19 10:38:25 +0000
commite96b985e27df3779617b6747db05d4b0526d84ba (patch)
treef9cdd0953230783e1be3614451d286c1ec59bfbf
parentf2a380e14cec0aefd3375a5977b08aeb22029556 (diff)
Frank Mehnert writes:
in ldso/ldso.c, function _dl_get_ready_to_run, the variable app_tpnt_tmp is not initialized. The function _dl_parse_dynamic_info() initializes some of their members but not all. For example, if the binary does _not_ contain a DT_TEXTREL record, it is possible that the condition if (app_tpnt->dynamic_info[DT_TEXTREL]) is nevertheless true and we therefore enter the following code path (ldso.c:270). My suggestion is to add _dl_memset(&app_tpnt_rel, 0, sizeof(app_tpnt_rel)); just behind the variable declarations of _dl_get_ready_to_run().
-rw-r--r--ldso/ldso/ldso.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index f7def0fd1..2a8c2c560 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -139,6 +139,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, unsigned long load_addr,
* setup so we can use _dl_dprintf() to print debug noise
* instead of the SEND_STDERR macros used in dl-startup.c */
+ _dl_memset(&app_tpnt_rel, 0x00, sizeof(app_tpnt_rel));
/* Store the page size for later use */
_dl_pagesize = (auxvt[AT_PAGESZ].a_un.a_val) ? (size_t) auxvt[AT_PAGESZ].a_un.a_val : PAGE_SIZE;